summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'syntax')
-rw-r--r--syntax/gdscript3.vim101
-rw-r--r--syntax/gsl.vim63
2 files changed, 164 insertions, 0 deletions
diff --git a/syntax/gdscript3.vim b/syntax/gdscript3.vim
new file mode 100644
index 00000000..dd60b450
--- /dev/null
+++ b/syntax/gdscript3.vim
@@ -0,0 +1,101 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'gdscript') == -1
+
+" 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
+
+endif
diff --git a/syntax/gsl.vim b/syntax/gsl.vim
new file mode 100644
index 00000000..6118a3af
--- /dev/null
+++ b/syntax/gsl.vim
@@ -0,0 +1,63 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'gdscript') == -1
+
+" Syntax file for Godot Shading Language
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "gsl"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+syn keyword gslConditional if else
+syn keyword gslRepeat for while
+syn match gslOperator "\V&&\|||\|!\|&\|^\||\|~\|*\|/\|%\|+\|-\|=\|<\|>\|;"
+syn match gslDelimiter "\V(\|)\|[\|]\|{\|}"
+syn keyword gslStatement return discard
+syn keyword gslBoolean true false
+
+syn keyword gslKeyword shader_type render_mode varying flat noperspective smooth
+ \ uniform lowp mediump highp in out inout
+
+syn keyword gslType void bool bvec2 bvec3 bvec4 int ivec2 ivec3 ivec4
+ \ uint uvec2 uvec3 uvec4 float vec2 vec3 vec4
+ \ mat2 mat3 mat4 sampler2D isampler2D usampler2D samplerCube
+
+syn match gslMember "\v<(\.)@<=[a-z_]+\w*>"
+syn match gslConstant "\v<[A-Z_]+[A-Z0-9_]*>"
+syn match gslFunction "\v<\w*>(\()@="
+
+syn match gslNumber "\v<\d+(\.)@!>"
+syn match gslFloat "\v<\d*\.\d+(\.)@!>"
+syn match gslFloat "\v<\d*\.=\d+(e-=\d+)@="
+syn match gslExponent "\v(\d*\.=\d+)@<=e-=\d+>"
+
+syn match gslComment "\v//.*$"
+syn region gslComment start="/\*" end="\*/"
+syn keyword gslTodo TODO FIXME XXX NOTE BUG HACK OPTIMIZE containedin=gslComment
+
+hi def link gslConditional Conditional
+hi def link gslRepeat Repeat
+hi def link gslOperator Operator
+hi def link gslDelimiter Delimiter
+hi def link gslStatement Statement
+hi def link gslBoolean Boolean
+
+hi def link gslKeyword Keyword
+hi def link gslMember Identifier
+hi def link gslConstant Constant
+hi def link gslFunction Function
+hi def link gslType Type
+
+hi def link gslNumber Number
+hi def link gslFloat Float
+hi def link gslExponent Special
+
+hi def link gslComment Comment
+hi def link gslTodo Todo
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+endif