diff options
Diffstat (limited to 'config/vim')
-rw-r--r-- | config/vim/plugin/hare.vim | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/config/vim/plugin/hare.vim b/config/vim/plugin/hare.vim new file mode 100644 index 0000000..ad8cd3a --- /dev/null +++ b/config/vim/plugin/hare.vim @@ -0,0 +1,78 @@ +" Vim syntax file +" Language: Hare + +if exists("b:current_syntax") + finish +endif + +syn case match +syn keyword hareKeyword let const fn def type static export defer _ +syn keyword hareBranch for return break continue yield +syn keyword hareConditional if else match switch +syn keyword hareLabel case +syn keyword hareBuiltin len offset free alloc assert append abort delete insert +syn keyword hareBuiltin vastart vaarg vaend +syn keyword hareOperator is as +syn match hareType "\vsize((\_\s|//.*)*\()@!" +syn match hareBuiltin "\vsize((\_\s|//.*)*\()@=" +syn match harePreProc "^use .*;" +syn match harePreProc "@[a-z]*" +syn match hareOperator "\.\.\." "\.\." + +syn region hareString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ +syn region hareString start=+`+ end=+`+ + +"adapted from c.vim +"integer number, or floating point number without a dot and with "f". +syn match hareNumbers display transparent "\v<\d" contains=hareNumber,hareOctal,hareBinary,hareFloat +syn match hareNumber display contained "\v\d+(e[-+]?\d+)?(z|[iu](8|16|32|64)?)?" +"hex number +syn match hareNumber display contained "\v0x\x+(z|[iu](8|16|32|64)?)?" +"octal number +syn match hareOctal display contained "\v0o\o+(z|[iu](8|16|32|64)?)?" +"binary number +syn match hareBinary display contained '\v0b[01]+(z|[iu](8|16|32|64)?)?' +syn match hareFloat display contained "\v\d+(e[-+]?\d+)?(f32|f64)" +"floating point number, with dot, optional exponent +syn match hareFloat display contained "\v\d+\.\d+(e[-+]?\d+)?(f32|f64)?" + +syn match hareSpaceError display excludenl "\v\s+$" +syn match hareSpaceError display "\v +\t"me=e-1 + +syn keyword hareTodo contained TODO FIXME XXX +syn region hareComment start="//" end="$" contains=hareTodo,@Spell + +syn keyword hareType u8 u16 u32 u64 i8 i16 i32 i64 +syn keyword hareType uint int +syn keyword hareType uintptr +syn keyword hareType f32 f64 +syn keyword hareType bool +syn keyword hareType char str +syn keyword hareType void +syn keyword hareType struct union +syn keyword hareType enum +syn keyword hareType nullable +syn keyword hareType rune +syn keyword hareType valist +syn keyword hareNull null +syn keyword hareBoolean true false + +hi def link hareBinary Number +hi def link hareBoolean Boolean +hi def link hareBranch Repeat +hi def link hareBuiltin Function +hi def link hareComment Comment +hi def link hareConditional Conditional +hi def link hareFloat Number +hi def link hareKeyword Keyword +hi def link hareLabel Label +hi def link hareNull Constant +hi def link hareNumber Number +hi def link hareOctal Number +hi def link hareOperator Operator +hi def link harePreProc PreProc +hi def link hareString String +hi def link hareTodo Todo +hi def link hareType Type +hi def link hareSpaceError Error +" vim: tabstop=8 shiftwidth=2 expandtab |