" Vim syntax file " Language: Terra; based on lua.vim (2012 Feb 07), bundled with vim 7.3. " Maintainer: Amelia Cuss " First Author: Carlos Augusto Teixeira Mendes " Last Change: 2013 Jul 20 if version < 600 syntax clear elseif exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match " syncing method syn sync minlines=100 " Comments syn keyword terraTodo contained TODO FIXME XXX syn match terraComment "--.*$" contains=terraTodo,@Spell " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. syn region terraComment matchgroup=terraComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=terraTodo,@Spell " First line may start with #! syn match terraComment "\%^#!.*" " catch errors caused by wrong parenthesis and wrong curly brackets or " keywords placed outside their respective blocks syn region terraParen transparent start='(' end=')' contains=TOP,terraParenError syn match terraParenError ")" syn match terraError "}" syn match terraError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" " Function declaration syn region terraFunctionBlock transparent matchgroup=terraFunction start="\" end="\" contains=TOP syn region terraTerraFunctionBlock transparent matchgroup=terraTerraFunction start="\" end="\" contains=TOP " quote syn region terraQuoteBlock transparent matchgroup=terraQuote start="\" end="\" contains=TOP " else syn keyword terraCondElse matchgroup=terraCond contained containedin=terraCondEnd else " then ... end syn region terraCondEnd contained transparent matchgroup=terraCond start="\" end="\" contains=TOP " elseif ... then syn region terraCondElseif contained containedin=terraCondEnd transparent matchgroup=terraCond start="\" end="\" contains=TOP " if ... then syn region terraCondStart transparent matchgroup=terraCond start="\" end="\"me=e-4 contains=TOP nextgroup=terraCondEnd skipwhite skipempty " do ... end syn region terraBlock transparent matchgroup=terraStatement start="\" end="\" contains=TOP " repeat ... until syn region terraRepeatBlock transparent matchgroup=terraRepeat start="\" end="\" contains=TOP " while ... do syn region terraWhile transparent matchgroup=terraRepeat start="\" end="\"me=e-2 contains=TOP nextgroup=terraBlock skipwhite skipempty " for ... do and for ... in ... do syn region terraFor transparent matchgroup=terraRepeat start="\" end="\"me=e-2 contains=TOP nextgroup=terraBlock skipwhite skipempty syn keyword terraFor contained containedin=terraFor in " other keywords syn keyword terraStatement return local break syn keyword terraStatement goto syn match terraLabel "::\I\i*::" syn keyword terraOperator and or not syn keyword terraConstant nil syn keyword terraConstant true false " (more) Terra keywords syn keyword terraStruct struct union syn keyword terraVariable var syn keyword terraType rawstring niltype double float bool int uint int64 uint64 int32 uint32 int16 uint16 int8 uint8 " Strings syn match terraSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# syn region terraString2 matchgroup=terraString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell syn region terraString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=terraSpecial,@Spell syn region terraString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=terraSpecial,@Spell " integer number syn match terraNumber "\<\d\+\>" " floating point number, with dot, optional exponent syn match terraNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>" " floating point number, starting with a dot, optional exponent syn match terraNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>" " floating point number, without dot, with exponent syn match terraNumber "\<\d\+[eE][-+]\=\d\+\>" " hex numbers syn match terraNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" " tables syn region terraTableBlock transparent matchgroup=terraTable start="{" end="}" contains=TOP,terraStatement syn keyword terraFunc assert collectgarbage dofile error next syn keyword terraFunc print rawget rawset tonumber tostring type _VERSION syn keyword terraFunc getmetatable setmetatable syn keyword terraFunc ipairs pairs syn keyword terraFunc pcall xpcall syn keyword terraFunc _G loadfile rawequal require import syn keyword terraFunc load select syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn keyword terraFunc _ENV rawlen syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ syn match terraFunc /\/ " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_terra_syntax_inits") if version < 508 let did_terra_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink terraStatement Statement HiLink terraRepeat Repeat HiLink terraFor Repeat HiLink terraString String HiLink terraString2 String HiLink terraNumber Number HiLink terraOperator Operator HiLink terraConstant Constant HiLink terraCond Conditional HiLink terraCondElse Conditional HiLink terraFunction Function HiLink terraTerraFunction Function HiLink terraQuote Function HiLink terraComment Comment HiLink terraTodo Todo HiLink terraTable Structure HiLink terraStruct Structure HiLink terraError Error HiLink terraParenError Error HiLink terraSpecial SpecialChar HiLink terraFunc Identifier HiLink terraVariable Identifier HiLink terraType Type HiLink terraLabel Label delcommand HiLink endif let b:current_syntax = "terra" let &cpo = s:cpo_save unlet s:cpo_save " vim: et ts=8 sw=2