neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

gdscript.vim (3878B)


      1 " Vim syntax file for Godot gdscript
      2 " Language:     gdscript
      3 " Maintainer:   Maxim Kim <habamax@gmail.com>
      4 " Website:      https://github.com/habamax/vim-gdscript
      5 " Filenames:    *.gd
      6 
      7 if exists("b:current_syntax")
      8    finish
      9 endif
     10 
     11 let s:keepcpo = &cpo
     12 set cpo&vim
     13 
     14 syntax sync maxlines=100
     15 
     16 syn keyword gdscriptConditional if else elif match
     17 syn keyword gdscriptRepeat for while break continue
     18 
     19 syn keyword gdscriptOperator is as not and or in
     20 
     21 syn match gdscriptBlockStart ":\s*$"
     22 
     23 syn keyword gdscriptKeyword null self owner parent tool
     24 syn keyword gdscriptBoolean false true
     25 
     26 syn keyword gdscriptStatement remote master puppet remotesync mastersync puppetsync sync
     27 syn keyword gdscriptStatement return pass
     28 syn keyword gdscriptStatement static const enum
     29 syn keyword gdscriptStatement breakpoint assert
     30 syn keyword gdscriptStatement onready
     31 syn keyword gdscriptStatement class_name extends
     32 
     33 syn keyword gdscriptType void bool int float String contained
     34 syn match gdscriptType ":\s*\zs\h\w*" contained
     35 syn match gdscriptType "->\s*\zs\h\w*" contained
     36 
     37 syn keyword gdscriptStatement var nextgroup=gdscriptTypeDecl skipwhite
     38 syn keyword gdscriptStatement const nextgroup=gdscriptTypeDecl skipwhite
     39 syn match gdscriptTypeDecl "\h\w*\s*:\s*\h\w*" contains=gdscriptType contained skipwhite
     40 syn match gdscriptTypeDecl "->\s*\h\w*" contains=gdscriptType skipwhite
     41 
     42 syn keyword gdscriptStatement export nextgroup=gdscriptExportTypeDecl skipwhite
     43 syn match gdscriptExportTypeDecl "(.\{-}[,)]" contains=gdscriptOperator,gdscriptType contained skipwhite
     44 
     45 syn keyword gdscriptStatement setget nextgroup=gdscriptSetGet,gdscriptSetGetSeparator skipwhite
     46 syn match gdscriptSetGet "\h\w*" nextgroup=gdscriptSetGetSeparator display contained skipwhite
     47 syn match gdscriptSetGetSeparator "," nextgroup=gdscriptSetGet display contained skipwhite
     48 
     49 syn keyword gdscriptStatement class func signal nextgroup=gdscriptFunctionName skipwhite
     50 syn match gdscriptFunctionName "\h\w*" nextgroup=gdscriptFunctionParams display contained skipwhite
     51 syn match gdscriptFunctionParams "(.*)" contains=gdscriptTypeDecl display contained skipwhite
     52 
     53 syn match gdscriptNode "\$\h\w*\%(/\h\w*\)*"
     54 
     55 syn match gdscriptComment "#.*$" contains=@Spell,gdscriptTodo
     56 
     57 syn region gdscriptString matchgroup=gdscriptQuotes
     58      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
     59      \ contains=gdscriptEscape,@Spell
     60 
     61 syn region gdscriptString matchgroup=gdscriptTripleQuotes
     62      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
     63      \ contains=gdscriptEscape,@Spell
     64 
     65 syn match gdscriptEscape +\\[abfnrtv'"\\]+ contained
     66 syn match gdscriptEscape "\\$"
     67 
     68 " Numbers
     69 syn match gdscriptNumber "\<0x\%(_\=\x\)\+\>"
     70 syn match gdscriptNumber "\<0b\%(_\=[01]\)\+\>"
     71 syn match gdscriptNumber "\<\d\%(_\=\d\)*\>"
     72 syn match gdscriptNumber "\<\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
     73 syn match gdscriptNumber "\<\d\%(_\=\d\)*\.\%(e[+-]\=\d\%(_\=\d\)*\)\=\%(\W\|$\)\@="
     74 syn match gdscriptNumber "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
     75 
     76 " XXX, TODO, etc
     77 syn keyword gdscriptTodo TODO XXX FIXME HACK NOTE BUG contained
     78 
     79 hi def link gdscriptStatement Statement
     80 hi def link gdscriptKeyword Keyword
     81 hi def link gdscriptConditional Conditional
     82 hi def link gdscriptBoolean Boolean
     83 hi def link gdscriptOperator Operator
     84 hi def link gdscriptRepeat Repeat
     85 hi def link gdscriptSetGet Function
     86 hi def link gdscriptFunctionName Function
     87 hi def link gdscriptBuiltinStruct Typedef
     88 hi def link gdscriptComment Comment
     89 hi def link gdscriptString String
     90 hi def link gdscriptQuotes String
     91 hi def link gdscriptTripleQuotes String
     92 hi def link gdscriptEscape Special
     93 hi def link gdscriptNode PreProc
     94 hi def link gdscriptType Type
     95 hi def link gdscriptNumber Number
     96 hi def link gdscriptBlockStart Special
     97 hi def link gdscriptTodo Todo
     98 
     99 
    100 let b:current_syntax = "gdscript"
    101 
    102 let &cpo = s:keepcpo
    103 unlet s:keepcpo