mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-12 05:23:51 -05:00
Update
This commit is contained in:
250
syntax/vlang.vim
250
syntax/vlang.vim
@@ -51,189 +51,191 @@ endif
|
||||
|
||||
syn case match
|
||||
|
||||
syn match vDeclType "\<\(struct\|interface\)\>"
|
||||
syn match vDeclType "\<\(struct\|interface\|type\|enum\)\>"
|
||||
syn keyword vDeclaration pub mut var const
|
||||
hi def link vDeclType Keyword
|
||||
hi def link vDeclaration Keyword
|
||||
|
||||
syn keyword vDirective module import
|
||||
syn keyword vDeclaration pub mut const type enum
|
||||
syn region vIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match vIncluded display contained "<[^>]*>"
|
||||
syn match vFlagDefinition display contained "\s\i[^\n]*"
|
||||
syn match vInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=vIncluded
|
||||
syn match vFlag display "^\s*\zs\(%:\|#\)\s*flag\>\s*[^\n]*" contains=vFlagDefinition
|
||||
syn region vShebang display start=/^#!/ end=/$/
|
||||
syn keyword vDirective module import
|
||||
hi def link vDirective Statement
|
||||
|
||||
hi def link vDirective Statement
|
||||
hi def link vDeclaration Keyword
|
||||
hi def link vDeclType Keyword
|
||||
hi def link vInclude Include
|
||||
hi def link vFlag Include
|
||||
hi def link vIncluded vString
|
||||
hi def link vFlagDefinition vString
|
||||
hi def link vShebang Include
|
||||
syn region vIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match vIncluded display contained "<[^>]*>"
|
||||
syn match vFlagDefinition display contained "\s\i[^\n]*"
|
||||
hi def link vIncluded vString
|
||||
hi def link vFlagDefinition vString
|
||||
|
||||
syn match vInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=vIncluded
|
||||
syn match vFlag display "^\s*\zs\(%:\|#\)\s*flag\>\s*[^\n]*" contains=vFlagDefinition
|
||||
syn region vShebang display start=/^#!/ end=/$/
|
||||
hi def link vInclude Include
|
||||
hi def link vFlag Include
|
||||
hi def link vShebang Include
|
||||
|
||||
" Keywords within functions
|
||||
syn keyword vStatement defer go goto return break continue fallthrough
|
||||
syn keyword vConditional if else switch match or
|
||||
syn keyword vLabel case default
|
||||
syn keyword vRepeat for in
|
||||
syn match vCodeGen /$if\>/
|
||||
syn match vCodeGen /\.fields\>/
|
||||
syn match vCodeGen /\.$\i*\>/
|
||||
syn keyword vStatement defer go goto return break continue
|
||||
hi def link vStatement Statement
|
||||
|
||||
hi def link vStatement Statement
|
||||
hi def link vConditional Conditional
|
||||
hi def link vLabel Label
|
||||
hi def link vRepeat Repeat
|
||||
hi def link vCodeGen Identifier
|
||||
syn keyword vConditional if else match or
|
||||
hi def link vConditional Conditional
|
||||
|
||||
syn keyword vRepeat for in
|
||||
hi def link vRepeat Repeat
|
||||
|
||||
syn match vCodeGen /$if\>/
|
||||
" XXX Enable when compile-time code-gen is implemented in V
|
||||
" syn match vCodeGen /\.fields\>/
|
||||
" syn match vCodeGen /\.$\i*\>/
|
||||
hi def link vCodeGen Identifier
|
||||
|
||||
" Predefined types
|
||||
syn keyword vType chan map bool string error voidptr
|
||||
syn keyword vSignedInts int i8 i16 i32 i64 rune intptr
|
||||
syn keyword vUnsignedInts byte uint u8 u16 u32 u64 byteptr
|
||||
syn keyword vFloats f32 f64 floatptr
|
||||
syn keyword vComplexes complex64 complex128
|
||||
syn keyword vType chan map bool string error voidptr
|
||||
syn keyword vSignedInts int i8 i16 i64 rune intptr
|
||||
syn keyword vUnsignedInts byte u16 u32 u64 byteptr
|
||||
syn keyword vFloats f32 f64 floatptr
|
||||
" XXX Enable when complex numbers are implemented in V
|
||||
" syn keyword vComplexes complex64 complex128
|
||||
|
||||
hi def link vType Type
|
||||
hi def link vSignedInts Type
|
||||
hi def link vUnsignedInts Type
|
||||
hi def link vFloats Type
|
||||
hi def link vComplexes Type
|
||||
hi def link vType Type
|
||||
hi def link vSignedInts Type
|
||||
hi def link vUnsignedInts Type
|
||||
hi def link vFloats Type
|
||||
" XXX Enable when complex numbers implemented in V
|
||||
" hi def link vComplexes Type
|
||||
|
||||
" Treat fn specially: it's a declaration at the start of a line, but a type
|
||||
" elsewhere. Order matters here.
|
||||
" syn match vType /\<fn\>/
|
||||
syn match vDeclaration /\<fn\>/
|
||||
syn match vDeclaration contained /\<fn\>/
|
||||
syn match vDeclaration /\<fn\>/
|
||||
syn match vDeclaration contained /\<fn\>/
|
||||
|
||||
" Predefined functions and values
|
||||
syn keyword vBuiltins assert C cap complex copy delete exit imag
|
||||
syn keyword vBuiltins print println eprint eprintln print_backtrace
|
||||
syn keyword vBuiltins float_calloc ok memdup range_int real recover
|
||||
syn keyword vBuiltins malloc byte_calloc float_calloc
|
||||
syn keyword vBuiltins isok isnil panic on_panic
|
||||
syn keyword vConstants iota true false
|
||||
syn match vBuiltins /\<json\.\(encode\|decode\)\>/
|
||||
syn keyword vBuiltins assert C
|
||||
syn keyword vBuiltins complex exit imag
|
||||
syn keyword vBuiltins print println eprint eprintln
|
||||
syn keyword vBuiltins malloc copy memdup isnil
|
||||
syn keyword vBuiltins panic recover
|
||||
syn match vBuiltins /\<json\.\(encode\|decode\)\>/
|
||||
hi def link vBuiltins Keyword
|
||||
|
||||
hi def link vBuiltins Keyword
|
||||
hi def link vConstants Keyword
|
||||
syn keyword vConstants true false
|
||||
hi def link vConstants Keyword
|
||||
|
||||
" Comments; their contents
|
||||
syn keyword vTodo contained TODO FIXME XXX BUG
|
||||
syn cluster vCommentGroup contains=vTodo
|
||||
syn region vComment start="/\*" end="\*/" contains=@vCommentGroup,@Spell
|
||||
syn region vComment start="//" end="$" contains=@vCommentGroup,@Spell
|
||||
syn keyword vTodo contained TODO FIXME XXX BUG
|
||||
hi def link vTodo Todo
|
||||
|
||||
hi def link vComment Comment
|
||||
hi def link vTodo Todo
|
||||
syn cluster vCommentGroup contains=vTodo
|
||||
syn region vComment start="/\*" end="\*/" contains=@vCommentGroup,@Spell
|
||||
syn region vComment start="//" end="$" contains=@vCommentGroup,@Spell
|
||||
hi def link vComment Comment
|
||||
|
||||
" Go escapes
|
||||
syn match vEscapeOctal display contained "\\[0-7]\{3}"
|
||||
syn match vEscapeVar display contained "\$[0-9A-Za-z\.]*"
|
||||
syn match vEscapeVar display contained "\${[^}]*}"
|
||||
syn match vEscapeC display contained +\\[abfnrtv\\'"]+
|
||||
syn match vEscapeX display contained "\\x\x\{2}"
|
||||
syn match vEscapeU display contained "\\u\x\{4}"
|
||||
syn match vEscapeBigU display contained "\\U\x\{8}"
|
||||
syn match vEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+
|
||||
" V escapes
|
||||
syn match vStringVar display contained +\$[0-9A-Za-z\._]*\([(][^)]*[)]\)\?+
|
||||
syn match vStringVar display contained "\${[^}]*}"
|
||||
syn match vStringSpeChar display contained +\\[abfnrtv\\'"]+
|
||||
syn match vStringX display contained "\\x\x\{1,2}"
|
||||
syn match vStringU display contained "\\u\x\{4}"
|
||||
syn match vStringBigU display contained "\\U\x\{8}"
|
||||
syn match vStringError display contained +\\[^0-7xuUabfnrtv\\'"]+
|
||||
|
||||
hi def link vEscapeOctal vSpecialString
|
||||
hi def link vEscapeVar vSpecialString
|
||||
hi def link vEscapeC vSpecialString
|
||||
hi def link vEscapeX vSpecialString
|
||||
hi def link vEscapeU vSpecialString
|
||||
hi def link vEscapeBigU vSpecialString
|
||||
hi def link vSpecialString Special
|
||||
hi def link vEscapeError Error
|
||||
hi def link vStringVar Special
|
||||
hi def link vStringSpeChar Special
|
||||
hi def link vStringX Special
|
||||
hi def link vStringU Special
|
||||
hi def link vStringBigU Special
|
||||
hi def link vStringError Error
|
||||
|
||||
" Characters and their contents
|
||||
syn cluster vCharacterGroup contains=vStringSpeChar,vStringVar,vStringX,vStringU,vStringBigU
|
||||
syn region vCharacter start=+`+ end=+`+ contains=@vCharacterGroup
|
||||
hi def link vCharacter Character
|
||||
|
||||
" Strings and their contents
|
||||
syn cluster vStringGroup contains=vEscapeOctal,vEscapeVar,vEscapeC,vEscapeX,vEscapeU,vEscapeBigU,vEscapeError
|
||||
syn region vString start=+"+ skip=+\\\\\|\\'+ end=+"+ contains=@vStringGroup
|
||||
syn region vRawString start=+`+ end=+`+
|
||||
syn cluster vStringGroup contains=@vCharacterGroup,vStringError
|
||||
|
||||
hi def link vString String
|
||||
hi def link vRawString String
|
||||
syn region vString start=+"+ skip=+\\\\\|\\'+ end=+"+ contains=@vStringGroup
|
||||
syn region vString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@vStringGroup
|
||||
|
||||
" Characters; their contents
|
||||
syn cluster vCharacterGroup contains=vEscapeOctal,vEscapeC,vEscapeVar,vEscapeX,vEscapeU,vEscapeBigU
|
||||
syn region vCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@vCharacterGroup
|
||||
syn region vRawString start=+r"+ skip=+\\\\\|\\'+ end=+"+
|
||||
syn region vRawString start=+r'+ skip=+\\\\\|\\'+ end=+'+
|
||||
|
||||
hi def link vCharacter Character
|
||||
hi def link vString String
|
||||
hi def link vRawString String
|
||||
|
||||
" Regions
|
||||
syn region vBlock start="{" end="}" transparent fold
|
||||
syn region vParen start='(' end=')' transparent
|
||||
syn region vBlock start="{" end="}" transparent fold
|
||||
syn region vParen start='(' end=')' transparent
|
||||
|
||||
" Integers
|
||||
syn match vDecimalInt "\<\d\+\([Ee]\d\+\)\?\>"
|
||||
syn match vHexadecimalInt "\<0x\x\+\>"
|
||||
syn match vOctalInt "\<0\o\+\>"
|
||||
syn match vOctalError "\<0\o*[89]\d*\>"
|
||||
syn match vDecimalInt "\<\d\+\([Ee]\d\+\)\?\>"
|
||||
syn match vOctalInt "\<0o\o\+\>"
|
||||
|
||||
hi def link vDecimalInt Integer
|
||||
hi def link vHexadecimalInt Integer
|
||||
hi def link vOctalInt Integer
|
||||
hi def link vDecimalInt Integer
|
||||
hi def link vOctalInt Integer
|
||||
hi def link Integer Number
|
||||
|
||||
" Floating point
|
||||
syn match vFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>"
|
||||
syn match vFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>"
|
||||
syn match vFloat "\<\d\+[Ee][-+]\d\+\>"
|
||||
syn match vFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>"
|
||||
syn match vFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>"
|
||||
syn match vFloat "\<\d\+[Ee][-+]\d\+\>"
|
||||
|
||||
hi def link vFloat Float
|
||||
hi def link vFloat Float
|
||||
hi def link Float Number
|
||||
|
||||
" Imaginary literals
|
||||
syn match vImaginary "\<\d\+i\>"
|
||||
syn match vImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>"
|
||||
syn match vImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>"
|
||||
syn match vImaginary "\<\d\+[Ee][-+]\d\+i\>"
|
||||
|
||||
hi def link vImaginary Number
|
||||
" XXX Enable when complex numbers are implemented in V
|
||||
" syn match vImaginary "\<\d\+i\>"
|
||||
" syn match vImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>"
|
||||
" syn match vImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>"
|
||||
" syn match vImaginary "\<\d\+[Ee][-+]\d\+i\>"
|
||||
"
|
||||
" hi def link vImaginary Number
|
||||
|
||||
" Generics
|
||||
syn match vGenericBrackets display contained "[<>]"
|
||||
syn match vInterfaceDeclaration display "\s*\zsinterface\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
|
||||
syn match vStructDeclaration display "\s*\zsstruct\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
|
||||
syn match vGenericBrackets display contained "[<>]"
|
||||
syn match vInterfaceDeclaration display "\s*\zsinterface\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
|
||||
syn match vStructDeclaration display "\s*\zsstruct\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
|
||||
" vFunctionName only appears when v_highlight_function_calls set
|
||||
syn match vFuncDeclaration display "\s*\zsfn\s*\i*\s*<[^>]*>" contains=vFunctionName,vDeclaration,vGenericBrackets
|
||||
syn match vFuncDeclaration display "\s*\zsfn\s*\i*\s*<[^>]*>" contains=vFunctionName,vDeclaration,vGenericBrackets
|
||||
|
||||
hi def link vGenericBrackets Identifier
|
||||
hi def link vGenericBrackets Identifier
|
||||
|
||||
" Spaces after "[]"
|
||||
if v_highlight_array_whitespace_error != 0
|
||||
syn match vSpaceError display "\(\[\]\)\@<=\s\+"
|
||||
if v_highlight_array_whitespace_error != 0
|
||||
syn match vSpaceError display "\(\[\]\)\@<=\s\+"
|
||||
endif
|
||||
|
||||
" Spacing errors around the 'chan' keyword
|
||||
if v_highlight_chan_whitespace_error != 0
|
||||
if v_highlight_chan_whitespace_error != 0
|
||||
" receive-only annotation on chan type
|
||||
syn match vSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@="
|
||||
syn match vSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@="
|
||||
" send-only annotation on chan type
|
||||
syn match vSpaceError display "\(\<chan\)\@<=\s\+\(<-\)\@="
|
||||
syn match vSpaceError display "\(\<chan\)\@<=\s\+\(<-\)\@="
|
||||
" value-ignoring receives in a few contexts
|
||||
syn match vSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+"
|
||||
syn match vSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+"
|
||||
endif
|
||||
|
||||
" Space-tab error
|
||||
if v_highlight_space_tab_error != 0
|
||||
syn match vSpaceError display " \+\t"me=e-1
|
||||
if v_highlight_space_tab_error != 0
|
||||
syn match vSpaceError display " \+\t"me=e-1
|
||||
endif
|
||||
|
||||
" Trailing white space error
|
||||
if v_highlight_trailing_whitespace_error != 0
|
||||
syn match vSpaceError display excludenl "\s\+$"
|
||||
if v_highlight_trailing_whitespace_error != 0
|
||||
syn match vSpaceError display excludenl "\s\+$"
|
||||
endif
|
||||
|
||||
hi def link vSpaceError Error
|
||||
hi def link vSpaceError Error
|
||||
|
||||
" Function calls and Fields are from: https://github.com/fatih/vim-go/blob/master/syntax/go.vim
|
||||
" Function calls;
|
||||
if v_highlight_function_calls
|
||||
syn match vFunctionCall /\w\+\ze\s*(/ contains=vBuiltins,vDeclaration
|
||||
syn match vFunctionName display contained /\s\w\+/
|
||||
hi def link vFunctionName Special
|
||||
syn match vFunctionCall /\w\+\ze\s*(/ contains=vBuiltins,vDeclaration
|
||||
syn match vFunctionName display contained /\s\w\+/
|
||||
hi def link vFunctionName Special
|
||||
endif
|
||||
|
||||
hi def link vFunctionCall Special
|
||||
hi def link vFunctionCall Special
|
||||
|
||||
" Fields;
|
||||
if v_highlight_fields
|
||||
@@ -245,14 +247,14 @@ if v_highlight_fields
|
||||
" - The symbols: , : .
|
||||
" 3. Have the start of highlight (hs) be the start of matched
|
||||
" pattern (s) offsetted one to the right (+1) (see :h E401)
|
||||
syn match vField /\.\w\+\
|
||||
syn match vField /\.\w\+\
|
||||
\%(\%([\/\-\+*%]\)\|\
|
||||
\%([\[\]{}<\>\)]\)\|\
|
||||
\%([\!=\^|&]\)\|\
|
||||
\%([\n\r\ ]\)\|\
|
||||
\%([,\:.]\)\)\@=/hs=s+1
|
||||
endif
|
||||
hi def link vField Identifier
|
||||
hi def link vField Identifier
|
||||
|
||||
" Search backwards for a global declaration to start processing the syntax.
|
||||
"syn sync match vSync grouphere NONE /^\(const\|var\|type\|func\)\>/
|
||||
|
||||
Reference in New Issue
Block a user