" Vim syntax file " Language: Zig " Maintainer: Andrew Kelley " Latest Revision: 02 December 2015 if exists("b:current_syntax") finish endif syn keyword zigKeyword fn return mut const extern unreachable export pub as use while asm syn keyword zigKeyword if else let void goto type enum struct continue break match volatile syn keyword zigType bool i8 u8 i16 u16 i32 u32 i64 u64 isize usize f32 f64 f128 string syn keyword zigConstant null syn keyword zigBoolean true false syn match zigDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\)\)\=" syn match zigHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" syn match zigOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" syn match zigBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" syn match zigShebang /\%^#![^[].*/ syn region zigCommentLine start="//" end="$" contains=zigTodo,@Spell syn region zigCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=zigTodo,@Spell syn region zigCommentBlock matchgroup=zigCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=zigTodo,zigCommentBlockNest,@Spell syn region zigCommentBlockDoc matchgroup=zigCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=zigTodo,zigCommentBlockDocNest,@Spell syn region zigCommentBlockNest matchgroup=zigCommentBlock start="/\*" end="\*/" contains=zigTodo,zigCommentBlockNest,@Spell contained transparent syn region zigCommentBlockDocNest matchgroup=zigCommentBlockDoc start="/\*" end="\*/" contains=zigTodo,zigCommentBlockDocNest,@Spell contained transparent syn keyword zigTodo contained TODO XXX syn match zigEscapeError display contained /\\./ syn match zigEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ syn match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{8}\)/ syn match zigEscapeUnicode display contained /\\u{\x\{1,6}}/ syn match zigStringContinuation display contained /\\\n\s*/ syn region zigString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=zigEscape,zigEscapeError,zigStringContinuation syn region zigString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigStringContinuation,@Spell syn region zigString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell let b:current_syntax = "zig" hi def link zigDecNumber zigNumber hi def link zigHexNumber zigNumber hi def link zigOctNumber zigNumber hi def link zigBinNumber zigNumber hi def link zigKeyword Keyword hi def link zigType Type hi def link zigShebang Comment hi def link zigCommentLine Comment hi def link zigCommentLineDoc SpecialComment hi def link zigCommentBlock zigCommentLine hi def link zigCommentBlockDoc zigCommentLineDoc hi def link zigTodo Todo hi def link zigStringContinuation Special hi def link zigString String hi def link zigEscape Special hi def link zigEscapeUnicode zigEscape hi def link zigEscapeError Error hi def link zigBoolean Boolean hi def link zigConstant Constant hi def link zigNumber Number