vim-quakec/syntax/quakec.vim
2019-10-24 23:35:50 -04:00

60 lines
2.2 KiB
VimL

if exists("b:current_syntax")
finish
endif
syn keyword qcStatement goto break return continue
syn keyword qcConditional if else switch
syn keyword qcRepeat while for do
syn keyword qcLabel case default
syn keyword qcStructure struct union enum typedef
syn keyword qcTodo contained TODO FIXME XXX
syn keyword qcQuaked contained QUAKED
syn keyword qcType void float vector string entity
syn keyword qcStorageClass local var const noref static
syn keyword qcAttribute noreturn inline eraseable noerase accumulate last alias deprecated coverage
syn keyword qcConstant TRUE FALSE
syn match qcNumbers display transparent "\<\d\|\.\d" contains=qcNumber
syn match qcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
syn match qcNumber display contained "\([0-9]\+\(\.[0-9]*f\=\)\=\|\.[0-9]\+f\=\)\>"
syn region qcVector display oneline start=+'+ end=+'+ keepend contains=@Spell
syn region qcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=qcSpecial,@Spell
syn match qcSpecial display contained "\\\(x\x\+\|.\|$\)"
syn match qcBuiltin display "\#\d\+"
syn match qcFrame display "\$[^\d\W]\w*\>"
syn match qcPragma display "\$\(flags\|base\|cd\|frame\|modelname\|origin\|scale\|skin\)\>"
syn cluster qcCommentGroup contains=qcTodo,qcQuaked
syn region qcLineComment start="//" skip="\\$" end="$" keepend contains=@qcCommentGroup,@Spell
syn region qcComment start="/\*" end="\*/" contains=@qcCommentGroup,@Spell fold extend
syn sync ccomment qcComment minlines=10
hi def link qcAttribute qcStorageClass
hi def link qcBuiltin PreProc
hi def link qcComment Comment
hi def link qcConditional Conditional
hi def link qcConstant Constant
hi def link qcFrame Number
hi def link qcLabel Label
hi def link qcLineComment qcComment
hi def link qcNumber Number
hi def link qcPragma PreProc
hi def link qcQuaked Label
hi def link qcRepeat Repeat
hi def link qcSpecial SpecialChar
hi def link qcStatement Statement
hi def link qcStorageClass StorageClass
hi def link qcString String
hi def link qcStructure Structure
hi def link qcTodo Todo
hi def link qcType Type
hi def link qcVector Number
let b:current_syntax = "quakec"