view runtime/syntax/gdscript.vim @ 29996:e37754a13778

Update runtime files Commit: https://github.com/vim/vim/commit/9b03d3e75b4274493bbe76772d7b92238791964c Author: Bram Moolenaar <Bram@vim.org> Date: Tue Aug 30 20:26:34 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Tue, 30 Aug 2022 21:30:04 +0200
parents
children ebed259f919f
line wrap: on
line source

" Vim syntax file for Godot gdscript
" Language:     gdscript
" Maintainer:   Maxim Kim <habamax@gmail.com>
" Filenames:    *.gd

if exists("b:current_syntax")
    finish
endif

let s:keepcpo= &cpo
set cpo&vim

syntax sync maxlines=100

syn keyword gdscriptConditional if else elif match
syn keyword gdscriptRepeat for while break continue

syn keyword gdscriptOperator is as not and or in

syn match gdscriptClass "\v<\u\w+>"
syn match gdscriptConstant "\<[_A-Z]\+[0-9_A-Z]*\>"
syn match gdscriptBlockStart ":\s*$"

syn keyword gdscriptKeyword null self owner parent tool
syn keyword gdscriptBoolean false true

syn keyword gdscriptStatement remote master puppet remotesync mastersync puppetsync sync
syn keyword gdscriptStatement return pass
syn keyword gdscriptStatement static const enum
syn keyword gdscriptStatement breakpoint assert
syn keyword gdscriptStatement onready
syn keyword gdscriptStatement class_name extends

syn keyword gdscriptType void bool int float String contained

syn keyword gdscriptStatement var nextgroup=gdscriptTypeDecl skipwhite
syn keyword gdscriptStatement const nextgroup=gdscriptTypeDecl skipwhite
syn match gdscriptTypeDecl "\h\w*\s*:\s*\h\w*" contains=gdscriptOperator,gdscriptType,gdscriptClass contained skipwhite
syn match gdscriptTypeDecl "->\s*\h\w*" contains=gdscriptOperator,gdscriptType,gdscriptClass skipwhite

syn keyword gdscriptStatement export nextgroup=gdscriptExportTypeDecl skipwhite
syn match gdscriptExportTypeDecl "(.\{-}[,)]" contains=gdscriptOperator,gdscriptType,gdscriptClass contained skipwhite

syn keyword gdscriptStatement setget nextgroup=gdscriptSetGet,gdscriptSetGetSeparator skipwhite
syn match gdscriptSetGet "\h\w*" nextgroup=gdscriptSetGetSeparator display contained skipwhite
syn match gdscriptSetGetSeparator "," nextgroup=gdscriptSetGet display contained skipwhite

syn keyword gdscriptStatement class func signal nextgroup=gdscriptFunctionName skipwhite
syn match gdscriptFunctionName "\h\w*" nextgroup=gdscriptFunctionParams display contained skipwhite
syn match gdscriptFunctionParams "(.*)" contains=gdscriptTypeDecl display contained skipwhite

syn match gdscriptNode "\$\h\w*\%(/\h\w*\)*"

syn match gdscriptComment "#.*$" contains=@Spell,gdscriptTodo

syn region gdscriptString matchgroup=gdscriptQuotes
      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
      \ contains=gdscriptEscape,@Spell

syn region gdscriptString matchgroup=gdscriptTripleQuotes
      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
      \ contains=gdscriptEscape,@Spell

syn match gdscriptEscape +\\[abfnrtv'"\\]+ contained
syn match gdscriptEscape "\\$"

" Numbers
syn match gdscriptNumber "\<0x\%(_\=\x\)\+\>"
syn match gdscriptNumber "\<0b\%(_\=[01]\)\+\>"
syn match gdscriptNumber "\<\d\%(_\=\d\)*\>"
syn match gdscriptNumber "\<\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
syn match gdscriptNumber "\<\d\%(_\=\d\)*\.\%(e[+-]\=\d\%(_\=\d\)*\)\=\%(\W\|$\)\@="
syn match gdscriptNumber "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"

" XXX, TODO, etc
syn keyword gdscriptTodo TODO XXX FIXME HACK NOTE BUG contained

hi def link gdscriptStatement Statement
hi def link gdscriptKeyword Keyword
hi def link gdscriptConditional Conditional
hi def link gdscriptBoolean Boolean
hi def link gdscriptOperator Operator
hi def link gdscriptRepeat Repeat
hi def link gdscriptSetGet Function
hi def link gdscriptFunctionName Function
hi def link gdscriptClass Type
hi def link gdscriptConstant Constant
hi def link gdscriptBuiltinStruct Typedef
hi def link gdscriptComment Comment
hi def link gdscriptString String
hi def link gdscriptQuotes String
hi def link gdscriptTripleQuotes String
hi def link gdscriptEscape Special
hi def link gdscriptNode PreProc
hi def link gdscriptType Type
hi def link gdscriptNumber Number
hi def link gdscriptBlockStart Special
hi def link gdscriptTodo Todo


let b:current_syntax = "gdscript"

let &cpo = s:keepcpo
unlet s:keepcpo