mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-12 05:23:51 -05:00
Add gdscript, closes #483
This commit is contained in:
101
syntax/gdscript3.vim
Normal file
101
syntax/gdscript3.vim
Normal file
@@ -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
|
||||
63
syntax/gsl.vim
Normal file
63
syntax/gsl.vim
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user