v2 / editors / vim / syntax / v.vim
61 lines · 49 sloc · 2.38 KB · fb276f7fb0e952b94f3207c3694546075d8806f9
Raw
1" Vim syntax file
2" Language: V
3" Maintainer: V contributors
4
5if exists('b:current_syntax')
6 finish
7endif
8
9syn case match
10
11syn keyword vTodo TODO FIXME XXX NOTE BUG contained
12syn match vComment +//.*$+ contains=vTodo,@Spell
13syn region vComment start='/\*' end='\*/' contains=vTodo,@Spell
14
15syn region vString start=+r'+ end=+'+
16syn region vString start=+c'+ skip=+\\\\\|\\'+ end=+'+ contains=vEscape,vInterpolation
17syn region vString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=vEscape,vInterpolation
18syn region vChar start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=vEscape
19
20syn match vEscape +\\[abfnrtv'"`\\$]+ contained
21syn match vEscape +\\x[0-9A-Fa-f]\{2}+ contained
22syn match vEscape +\\u[0-9A-Fa-f]\{4}+ contained
23syn region vInterpolation start=+\${+ end=+}+ contained contains=vComptime,vNumber,vString,vChar,vOperator
24
25syn match vNumber /\v<0x[0-9A-Fa-f_]+>/
26syn match vNumber /\v<0b[01_]+>/
27syn match vNumber /\v<0o[0-7_]+>/
28syn match vNumber /\v<\d[\d_]*\.\d[\d_]*([eE][+-]?\d[\d_]*)?>/
29syn match vNumber /\v<\d[\d_]*([eE][+-]?\d[\d_]*)?>/
30
31syn keyword vBoolean true false
32syn keyword vConstant none nil
33syn keyword vKeyword as asm assert atomic break const continue defer else enum false for fn __global go goto if import in interface is match module mut shared lock rlock none nil return select sizeof isreftype _likely_ _unlikely_ __offsetof struct true type typeof dump or union pub static volatile unsafe spawn implements like ilike
34syn keyword vType bool string rune i8 i16 int i64 i128 isize byte u8 u16 u32 u64 u128 usize f32 f64 char map chan any voidptr byteptr charptr
35
36syn match vComptime /\$[A-Za-z_][A-Za-z0-9_]*/
37syn match vComptime /@[A-Z_][A-Z0-9_]*/
38syn region vAttribute start=/@\[/ end=/\]/ contains=vComptime
39
40syn match vOperator /::\|:=\|==\|!=\|<=\|>=\|<<=\|>>=\|>>>=\|&&=\|||=\|<<\|>>>\|>>\|&&\|||\|+=\|-=\|\*=\|\/=\|%=\|\^=\||=\|&=\|<-\|++\|--/
41syn match vOperator /[+\-*\/%&|^~!=<>?:]/
42
43syn match vFunction /\<[A-Za-z_][A-Za-z0-9_]*\ze\s*(/
44
45hi def link vTodo Todo
46hi def link vComment Comment
47hi def link vString String
48hi def link vChar Character
49hi def link vEscape SpecialChar
50hi def link vInterpolation Special
51hi def link vNumber Number
52hi def link vBoolean Boolean
53hi def link vConstant Constant
54hi def link vKeyword Keyword
55hi def link vType Type
56hi def link vComptime PreProc
57hi def link vAttribute PreProc
58hi def link vOperator Operator
59hi def link vFunction Function
60
61let b:current_syntax = 'v'
62