| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  | " Vim syntax file | 
					
						
							|  |  |  | " Language: Zig | 
					
						
							|  |  |  | " Upstream: https://github.com/ziglang/zig.vim | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let s:cpo_save = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let s:zig_syntax_keywords = { | 
					
						
							|  |  |  |     \   'zigBoolean': ["true" | 
					
						
							|  |  |  |     \ ,                "false"] | 
					
						
							|  |  |  |     \ , 'zigNull': ["null"] | 
					
						
							|  |  |  |     \ , 'zigType': ["bool" | 
					
						
							|  |  |  |     \ ,             "f16" | 
					
						
							|  |  |  |     \ ,             "f32" | 
					
						
							|  |  |  |     \ ,             "f64" | 
					
						
							|  |  |  |     \ ,             "f80" | 
					
						
							|  |  |  |     \ ,             "f128" | 
					
						
							|  |  |  |     \ ,             "void" | 
					
						
							|  |  |  |     \ ,             "type" | 
					
						
							|  |  |  |     \ ,             "anytype" | 
					
						
							|  |  |  |     \ ,             "anyerror" | 
					
						
							|  |  |  |     \ ,             "anyframe" | 
					
						
							|  |  |  |     \ ,             "volatile" | 
					
						
							|  |  |  |     \ ,             "linksection" | 
					
						
							|  |  |  |     \ ,             "noreturn" | 
					
						
							|  |  |  |     \ ,             "allowzero" | 
					
						
							|  |  |  |     \ ,             "i0" | 
					
						
							|  |  |  |     \ ,             "u0" | 
					
						
							|  |  |  |     \ ,             "isize" | 
					
						
							|  |  |  |     \ ,             "usize" | 
					
						
							|  |  |  |     \ ,             "comptime_int" | 
					
						
							|  |  |  |     \ ,             "comptime_float" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,             "c_char" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,             "c_short" | 
					
						
							|  |  |  |     \ ,             "c_ushort" | 
					
						
							|  |  |  |     \ ,             "c_int" | 
					
						
							|  |  |  |     \ ,             "c_uint" | 
					
						
							|  |  |  |     \ ,             "c_long" | 
					
						
							|  |  |  |     \ ,             "c_ulong" | 
					
						
							|  |  |  |     \ ,             "c_longlong" | 
					
						
							|  |  |  |     \ ,             "c_ulonglong" | 
					
						
							|  |  |  |     \ ,             "c_longdouble" | 
					
						
							|  |  |  |     \ ,             "anyopaque"] | 
					
						
							|  |  |  |     \ , 'zigConstant': ["undefined" | 
					
						
							|  |  |  |     \ ,                 "unreachable"] | 
					
						
							|  |  |  |     \ , 'zigConditional': ["if" | 
					
						
							|  |  |  |     \ ,                    "else" | 
					
						
							|  |  |  |     \ ,                    "switch"] | 
					
						
							|  |  |  |     \ , 'zigRepeat': ["while" | 
					
						
							|  |  |  |     \ ,               "for"] | 
					
						
							|  |  |  |     \ , 'zigComparatorWord': ["and" | 
					
						
							|  |  |  |     \ ,                       "or" | 
					
						
							|  |  |  |     \ ,                       "orelse"] | 
					
						
							|  |  |  |     \ , 'zigStructure': ["struct" | 
					
						
							|  |  |  |     \ ,                  "enum" | 
					
						
							|  |  |  |     \ ,                  "union" | 
					
						
							|  |  |  |     \ ,                  "error" | 
					
						
							|  |  |  |     \ ,                  "packed" | 
					
						
							|  |  |  |     \ ,                  "opaque"] | 
					
						
							|  |  |  |     \ , 'zigException': ["error"] | 
					
						
							|  |  |  |     \ , 'zigVarDecl': ["var" | 
					
						
							|  |  |  |     \ ,                "const" | 
					
						
							|  |  |  |     \ ,                "comptime" | 
					
						
							|  |  |  |     \ ,                "threadlocal"] | 
					
						
							|  |  |  |     \ , 'zigDummyVariable': ["_"] | 
					
						
							|  |  |  |     \ , 'zigKeyword': ["fn" | 
					
						
							|  |  |  |     \ ,                "try" | 
					
						
							|  |  |  |     \ ,                "test" | 
					
						
							|  |  |  |     \ ,                "pub" | 
					
						
							|  |  |  |     \ ,                "usingnamespace"] | 
					
						
							|  |  |  |     \ , 'zigExecution': ["return" | 
					
						
							|  |  |  |     \ ,                  "break" | 
					
						
							|  |  |  |     \ ,                  "continue"] | 
					
						
							|  |  |  |     \ , 'zigMacro': ["defer" | 
					
						
							|  |  |  |     \ ,              "errdefer" | 
					
						
							|  |  |  |     \ ,              "async" | 
					
						
							|  |  |  |     \ ,              "nosuspend" | 
					
						
							|  |  |  |     \ ,              "await" | 
					
						
							|  |  |  |     \ ,              "suspend" | 
					
						
							|  |  |  |     \ ,              "resume" | 
					
						
							|  |  |  |     \ ,              "export" | 
					
						
							|  |  |  |     \ ,              "extern"] | 
					
						
							|  |  |  |     \ , 'zigPreProc': ["catch" | 
					
						
							|  |  |  |     \ ,                "inline" | 
					
						
							|  |  |  |     \ ,                "noinline" | 
					
						
							|  |  |  |     \ ,                "asm" | 
					
						
							|  |  |  |     \ ,                "callconv" | 
					
						
							|  |  |  |     \ ,                "noalias"] | 
					
						
							|  |  |  |     \ , 'zigBuiltinFn': ["align" | 
					
						
							|  |  |  |     \ ,                  "@addWithOverflow" | 
					
						
							|  |  |  |     \ ,                  "@as" | 
					
						
							|  |  |  |     \ ,                  "@atomicLoad" | 
					
						
							|  |  |  |     \ ,                  "@atomicStore" | 
					
						
							|  |  |  |     \ ,                  "@bitCast" | 
					
						
							|  |  |  |     \ ,                  "@breakpoint" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@trap" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@alignCast" | 
					
						
							|  |  |  |     \ ,                  "@alignOf" | 
					
						
							|  |  |  |     \ ,                  "@cDefine" | 
					
						
							|  |  |  |     \ ,                  "@cImport" | 
					
						
							|  |  |  |     \ ,                  "@cInclude" | 
					
						
							|  |  |  |     \ ,                  "@cUndef" | 
					
						
							|  |  |  |     \ ,                  "@clz" | 
					
						
							|  |  |  |     \ ,                  "@cmpxchgWeak" | 
					
						
							|  |  |  |     \ ,                  "@cmpxchgStrong" | 
					
						
							|  |  |  |     \ ,                  "@compileError" | 
					
						
							|  |  |  |     \ ,                  "@compileLog" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@constCast" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@ctz" | 
					
						
							|  |  |  |     \ ,                  "@popCount" | 
					
						
							|  |  |  |     \ ,                  "@divExact" | 
					
						
							|  |  |  |     \ ,                  "@divFloor" | 
					
						
							|  |  |  |     \ ,                  "@divTrunc" | 
					
						
							|  |  |  |     \ ,                  "@embedFile" | 
					
						
							|  |  |  |     \ ,                  "@export" | 
					
						
							|  |  |  |     \ ,                  "@extern" | 
					
						
							|  |  |  |     \ ,                  "@tagName" | 
					
						
							|  |  |  |     \ ,                  "@TagType" | 
					
						
							|  |  |  |     \ ,                  "@errorName" | 
					
						
							|  |  |  |     \ ,                  "@call" | 
					
						
							|  |  |  |     \ ,                  "@errorReturnTrace" | 
					
						
							|  |  |  |     \ ,                  "@fence" | 
					
						
							|  |  |  |     \ ,                  "@fieldParentPtr" | 
					
						
							|  |  |  |     \ ,                  "@field" | 
					
						
							|  |  |  |     \ ,                  "@unionInit" | 
					
						
							|  |  |  |     \ ,                  "@frameAddress" | 
					
						
							|  |  |  |     \ ,                  "@import" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@inComptime" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@newStackCall" | 
					
						
							|  |  |  |     \ ,                  "@asyncCall" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@ptrFromInt" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@max" | 
					
						
							|  |  |  |     \ ,                  "@min" | 
					
						
							|  |  |  |     \ ,                  "@memcpy" | 
					
						
							|  |  |  |     \ ,                  "@memset" | 
					
						
							|  |  |  |     \ ,                  "@mod" | 
					
						
							|  |  |  |     \ ,                  "@mulAdd" | 
					
						
							|  |  |  |     \ ,                  "@mulWithOverflow" | 
					
						
							|  |  |  |     \ ,                  "@splat" | 
					
						
							|  |  |  |     \ ,                  "@src" | 
					
						
							|  |  |  |     \ ,                  "@bitOffsetOf" | 
					
						
							|  |  |  |     \ ,                  "@byteOffsetOf" | 
					
						
							|  |  |  |     \ ,                  "@offsetOf" | 
					
						
							|  |  |  |     \ ,                  "@OpaqueType" | 
					
						
							|  |  |  |     \ ,                  "@panic" | 
					
						
							|  |  |  |     \ ,                  "@prefetch" | 
					
						
							|  |  |  |     \ ,                  "@ptrCast" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@intFromPtr" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@rem" | 
					
						
							|  |  |  |     \ ,                  "@returnAddress" | 
					
						
							|  |  |  |     \ ,                  "@setCold" | 
					
						
							|  |  |  |     \ ,                  "@Type" | 
					
						
							|  |  |  |     \ ,                  "@shuffle" | 
					
						
							|  |  |  |     \ ,                  "@reduce" | 
					
						
							|  |  |  |     \ ,                  "@select" | 
					
						
							|  |  |  |     \ ,                  "@setRuntimeSafety" | 
					
						
							|  |  |  |     \ ,                  "@setEvalBranchQuota" | 
					
						
							|  |  |  |     \ ,                  "@setFloatMode" | 
					
						
							|  |  |  |     \ ,                  "@shlExact" | 
					
						
							|  |  |  |     \ ,                  "@This" | 
					
						
							|  |  |  |     \ ,                  "@hasDecl" | 
					
						
							|  |  |  |     \ ,                  "@hasField" | 
					
						
							|  |  |  |     \ ,                  "@shlWithOverflow" | 
					
						
							|  |  |  |     \ ,                  "@shrExact" | 
					
						
							|  |  |  |     \ ,                  "@sizeOf" | 
					
						
							|  |  |  |     \ ,                  "@bitSizeOf" | 
					
						
							|  |  |  |     \ ,                  "@sqrt" | 
					
						
							|  |  |  |     \ ,                  "@byteSwap" | 
					
						
							|  |  |  |     \ ,                  "@subWithOverflow" | 
					
						
							|  |  |  |     \ ,                  "@intCast" | 
					
						
							|  |  |  |     \ ,                  "@floatCast" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@floatFromInt" | 
					
						
							|  |  |  |     \ ,                  "@intFromFloat" | 
					
						
							|  |  |  |     \ ,                  "@intFromBool" | 
					
						
							|  |  |  |     \ ,                  "@errorCast" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@truncate" | 
					
						
							|  |  |  |     \ ,                  "@typeInfo" | 
					
						
							|  |  |  |     \ ,                  "@typeName" | 
					
						
							|  |  |  |     \ ,                  "@TypeOf" | 
					
						
							|  |  |  |     \ ,                  "@atomicRmw" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@errorFromInt" | 
					
						
							|  |  |  |     \ ,                  "@intFromError" | 
					
						
							|  |  |  |     \ ,                  "@enumFromInt" | 
					
						
							|  |  |  |     \ ,                  "@intFromEnum" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@setAlignStack" | 
					
						
							|  |  |  |     \ ,                  "@frame" | 
					
						
							|  |  |  |     \ ,                  "@Frame" | 
					
						
							|  |  |  |     \ ,                  "@frameSize" | 
					
						
							|  |  |  |     \ ,                  "@bitReverse" | 
					
						
							|  |  |  |     \ ,                  "@Vector" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@volatileCast" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@sin" | 
					
						
							|  |  |  |     \ ,                  "@cos" | 
					
						
							|  |  |  |     \ ,                  "@tan" | 
					
						
							|  |  |  |     \ ,                  "@exp" | 
					
						
							|  |  |  |     \ ,                  "@exp2" | 
					
						
							|  |  |  |     \ ,                  "@log" | 
					
						
							|  |  |  |     \ ,                  "@log2" | 
					
						
							|  |  |  |     \ ,                  "@log10" | 
					
						
							| 
									
										
										
										
											2023-10-19 10:16:59 -05:00
										 |  |  |     \ ,                  "@abs" | 
					
						
							| 
									
										
										
										
											2022-12-06 18:20:10 +00:00
										 |  |  |     \ ,                  "@floor" | 
					
						
							|  |  |  |     \ ,                  "@ceil" | 
					
						
							|  |  |  |     \ ,                  "@trunc" | 
					
						
							|  |  |  |     \ ,                  "@wasmMemorySize" | 
					
						
							|  |  |  |     \ ,                  "@wasmMemoryGrow" | 
					
						
							|  |  |  |     \ ,                  "@round"] | 
					
						
							|  |  |  |     \ } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function! s:syntax_keyword(dict) | 
					
						
							|  |  |  |   for key in keys(a:dict) | 
					
						
							|  |  |  |     execute 'syntax keyword' key join(a:dict[key], ' ') | 
					
						
							|  |  |  |   endfor | 
					
						
							|  |  |  | endfunction | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | call s:syntax_keyword(s:zig_syntax_keywords) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax match zigType "\v<[iu][1-9]\d*>" | 
					
						
							|  |  |  | syntax match zigOperator display "\V\[-+/*=^&?|!><%~]" | 
					
						
							|  |  |  | syntax match zigArrowCharacter display "\V->" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "                                     12_34  (. but not ..)? (12_34)?     (exponent  12_34)? | 
					
						
							|  |  |  | syntax match zigDecNumber display   "\v<\d%(_?\d)*%(\.\.@!)?%(\d%(_?\d)*)?%([eE][+-]?\d%(_?\d)*)?" | 
					
						
							|  |  |  | syntax match zigHexNumber display "\v<0x\x%(_?\x)*%(\.\.@!)?%(\x%(_?\x)*)?%([pP][+-]?\d%(_?\d)*)?" | 
					
						
							|  |  |  | syntax match zigOctNumber display "\v<0o\o%(_?\o)*" | 
					
						
							|  |  |  | syntax match zigBinNumber display "\v<0b[01]%(_?[01])*" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax match zigCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/ | 
					
						
							|  |  |  | syntax match zigCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ | 
					
						
							|  |  |  | syntax match zigCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=zigEscape,zigEscapeError,zigCharacterInvalid,zigCharacterInvalidUnicode | 
					
						
							|  |  |  | syntax match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{6}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax region zigBlock start="{" end="}" transparent fold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax region zigCommentLine start="//" end="$" contains=zigTodo,@Spell | 
					
						
							|  |  |  | syntax region zigCommentLineDoc start="//[/!]/\@!" end="$" contains=zigTodo,@Spell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax match zigMultilineStringPrefix /c\?\\\\/ contained containedin=zigMultilineString | 
					
						
							|  |  |  | syntax region zigMultilineString matchgroup=zigMultilineStringDelimiter start="c\?\\\\" end="$" contains=zigMultilineStringPrefix display | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax keyword zigTodo contained TODO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syntax region zigString matchgroup=zigStringDelimiter start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,@Spell | 
					
						
							|  |  |  | syntax match zigEscapeError   display contained /\\./ | 
					
						
							|  |  |  | syntax match zigEscape        display contained /\\\([nrt\\'"]\|x\x\{2}\)/ | 
					
						
							|  |  |  | syntax match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | highlight default link zigDecNumber zigNumber | 
					
						
							|  |  |  | highlight default link zigHexNumber zigNumber | 
					
						
							|  |  |  | highlight default link zigOctNumber zigNumber | 
					
						
							|  |  |  | highlight default link zigBinNumber zigNumber | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | highlight default link zigBuiltinFn Statement | 
					
						
							|  |  |  | highlight default link zigKeyword Keyword | 
					
						
							|  |  |  | highlight default link zigType Type | 
					
						
							|  |  |  | highlight default link zigCommentLine Comment | 
					
						
							|  |  |  | highlight default link zigCommentLineDoc Comment | 
					
						
							|  |  |  | highlight default link zigDummyVariable Comment | 
					
						
							|  |  |  | highlight default link zigTodo Todo | 
					
						
							|  |  |  | highlight default link zigString String | 
					
						
							|  |  |  | highlight default link zigStringDelimiter String | 
					
						
							|  |  |  | highlight default link zigMultilineString String | 
					
						
							|  |  |  | highlight default link zigMultilineStringContent String | 
					
						
							|  |  |  | highlight default link zigMultilineStringPrefix String | 
					
						
							|  |  |  | highlight default link zigMultilineStringDelimiter Delimiter | 
					
						
							|  |  |  | highlight default link zigCharacterInvalid Error | 
					
						
							|  |  |  | highlight default link zigCharacterInvalidUnicode zigCharacterInvalid | 
					
						
							|  |  |  | highlight default link zigCharacter Character | 
					
						
							|  |  |  | highlight default link zigEscape Special | 
					
						
							|  |  |  | highlight default link zigEscapeUnicode zigEscape | 
					
						
							|  |  |  | highlight default link zigEscapeError Error | 
					
						
							|  |  |  | highlight default link zigBoolean Boolean | 
					
						
							|  |  |  | highlight default link zigNull Boolean | 
					
						
							|  |  |  | highlight default link zigConstant Constant | 
					
						
							|  |  |  | highlight default link zigNumber Number | 
					
						
							|  |  |  | highlight default link zigArrowCharacter zigOperator | 
					
						
							|  |  |  | highlight default link zigOperator Operator | 
					
						
							|  |  |  | highlight default link zigStructure Structure | 
					
						
							|  |  |  | highlight default link zigExecution Special | 
					
						
							|  |  |  | highlight default link zigMacro Macro | 
					
						
							|  |  |  | highlight default link zigConditional Conditional | 
					
						
							|  |  |  | highlight default link zigComparatorWord Keyword | 
					
						
							|  |  |  | highlight default link zigRepeat Repeat | 
					
						
							|  |  |  | highlight default link zigSpecial Special | 
					
						
							|  |  |  | highlight default link zigVarDecl Function | 
					
						
							|  |  |  | highlight default link zigPreProc PreProc | 
					
						
							|  |  |  | highlight default link zigException Exception | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | delfunction s:syntax_keyword | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "zig" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let &cpo = s:cpo_save | 
					
						
							|  |  |  | unlet! s:cpo_save |