blob: 4edae3047a73492e44715394c4336b327bbc78ca (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
if has_key(g:polyglot_is_disabled, 'gdscript')
finish
endif
" Syntax file for GDScript
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "gdscript3"
let s:save_cpo = &cpo
set cpo&vim
syn keyword gdConditional if elif else match
syn keyword gdRepeat for while
syn keyword gdOperator and or not is in
syn match gdOperator "\V&&\|||\|!\|&\|^\||\|~\|*\|/\|%\|+\|-\|=\|<\|>"
syn match gdDelimiter "\V(\|)\|[\|]\|{\|}"
syn keyword gdStatement break continue pass return
syn keyword gdKeyword extends tool signal self
\ const enum var onready export setget
syn match gdKeyword "\v^\s*((static\s*)=func|class)"
\ nextgroup=gdFunction skipwhite
syn keyword gdBoolean true false
syn match gdMember "\v<(\.)@<=[a-z_]+\w*>"
syn match gdFunction "\v<\w*>(\()@="
syn match gdSignal "\v(<signal>\s+)@<=<\w+>"
syn match gdSetGet "\v(<setget>\s+)@<=<\w+>"
syn match gdSetGet "\v(<setget>\s+\w*\s*,\s*)@<=<\w+>"
syn keyword gdNull null
syn keyword gdClass int float bool
syn match gdClass "\v<\u\w+>"
syn match gdConstant "\v<[A-Z_]+[A-Z0-9_]*>"
syn keyword gdClass AABB IP JSON OS RID
syn match gdNode "\v\$\a+\w*"
syn region gdString start='\v\"' end='\v\"'
syn region gdString start='\v\'' end='\v\''
syn match gdEscapeError "\v\\." containedin=gdString
syn match gdEscapeError "\v\\u.{,3}" containedin=gdString
syn match gdEscape "\v\\[abfnrtv\\'"]" containedin=gdString
syn match gdEscape "\v\\u[0-9]{4}" containedin=gdString
syn match gdFormat "\v\%\%" containedin=gdString
syn match gdFormat "\v\%[+-]=(\d*|\*)=\.=(\d*|\*)=[scdoxXf]" containedin=gdString
syn match gdNumber "\v<\d+(\.)@!>"
syn match gdNumber "\v<0x\x+(\.)@!>"
syn match gdFloat "\v<\d*\.\d+(\.)@!>"
syn match gdFloat "\v<\d*\.=\d+(e-=\d+)@="
syn match gdExponent "\v(\d*\.=\d+)@<=e-=\d+>"
syn match gdComment "\v#.*$"
syn keyword gdTodo TODO FIXME XXX NOTE BUG HACK OPTIMIZE containedin=gdComment
syn region gdFunctionFold
\ start="\v^\z(\s*)%(%(static\s+)=func|class)>"
\ end="\v\ze%(\s*\n)+%(\z1\s)@!."
\ fold transparent
syn region gdFold
\ matchgroup=gdComment
\ start='#.*{{{.*$'
\ end='#.*}}}.*$'
\ fold transparent
hi def link gdConditional Conditional
hi def link gdRepeat Repeat
hi def link gdOperator Operator
hi def link gdDelimiter Delimiter
hi def link gdStatement Statement
hi def link gdKeyword Keyword
hi def link gdBoolean Boolean
hi def link gdMember Identifier
hi def link gdFunction Function
hi def link gdSignal Function
hi def link gdSetGet Function
hi def link gdNull Constant
hi def link gdClass Type
hi def link gdConstant Constant
hi def link gdNode Identifier
hi def link gdString String
hi def link gdEscape Special
hi def link gdFormat Special
hi def link gdNumber Number
hi def link gdFloat Float
hi def link gdExponent Special
hi def link gdEscapeError Error
hi def link gdComment Comment
hi def link gdTodo Todo
let &cpo = s:save_cpo
unlet s:save_cpo
|