diff options
Diffstat (limited to 'config/nvim/syntax/HolyC.vim')
| -rw-r--r-- | config/nvim/syntax/HolyC.vim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/config/nvim/syntax/HolyC.vim b/config/nvim/syntax/HolyC.vim new file mode 100644 index 0000000..087626d --- /dev/null +++ b/config/nvim/syntax/HolyC.vim @@ -0,0 +1,36 @@ +function! DefineKeywords(keywords) + for keyword in a:keywords + execute 'syntax keyword HolyCKeyword '. keyword + endfor + hi def link HolyCKeyword Keyword +endfunction + +function! DefineSpecial(keywords) + for keyword in a:keywords + execute 'syntax keyword HolyCSpecial '. keyword + endfor + hi def link HolyCSpecial Special +endfunction + +function! DefineTypes(keywords) + for keyword in a:keywords + execute 'syntax keyword HolyCType '. keyword + endfor + hi def link HolyCType Type +endfunction + +call DefineTypes( [ 'U8', 'U16', 'U32', 'U64', 'I8', 'I16', 'I32', 'I64', 'F32', 'F64', 'Bool', 'U0' ] ) +call DefineSpecial( ['Main'] ) +call DefineKeywords( [ 'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break', 'continue', 'return', 'struct', 'union', 'typedef', 'enum', 'const', 'auto', 'static', 'extern', 'public', 'private', 'goto' ] ) + +syntax match HolyCVar /\<\w\+\>/ +syntax match HolyCFunction /\<\w\+\>\s*(\@=/ +syntax region HolyCFunctionBody start="(" end=")" contains=HolyCString,HolyCDelimiter,HolyCNum keepend +syntax match HolyCDelimiter /[()]/ containedin=HolyCFunctionBody +syntax match HolyCString /"[^"]*"/ +syntax match HolyCNum /\v\d+(\.\d+)?([eE][+-]?\d+)?/ +hi def link HolyCVar Variable +hi def link HolyCFunction Function +hi def link HolyCDelimiter Delimiter +hi def link HolyCString String +hi def link HolyCNum Number |
