diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2016-07-26 13:58:55 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2016-07-26 13:58:55 +0200 |
commit | f028cfae59d793753829ad54a1a4842440e36d64 (patch) | |
tree | ab4203bbc845024720461293c849f379853fe8f5 /syntax/lua.vim | |
parent | 041ab2d237f26e0fbe35612f67731221781ffe5d (diff) | |
download | vim-polyglot-f028cfae59d793753829ad54a1a4842440e36d64.tar.gz vim-polyglot-f028cfae59d793753829ad54a1a4842440e36d64.zip |
Add lua
Diffstat (limited to 'syntax/lua.vim')
-rw-r--r-- | syntax/lua.vim | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/syntax/lua.vim b/syntax/lua.vim new file mode 100644 index 00000000..87ba9e9b --- /dev/null +++ b/syntax/lua.vim @@ -0,0 +1,216 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'lua') == -1 + +" Vim syntax file +" Language: Lua +" URL: https://github.com/tbastos/vim-lua + +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let main_syntax = 'lua' +endif + +syntax sync fromstart + +" Clusters +syntax cluster luaBase contains=luaComment,luaCommentLong,luaConstant,luaNumber,luaString,luaStringLong,luaBuiltIn +syntax cluster luaExpr contains=@luaBase,luaTable,luaParen,luaBracket,luaSpecialTable,luaSpecialValue,luaOperator,luaEllipsis,luaComma,luaFunc,luaFuncCall,luaError +syntax cluster luaStat contains=@luaExpr,luaIfThen,luaBlock,luaLoop,luaGoto,luaLabel,luaLocal,luaStatement,luaSemiCol + +syntax match luaNoise /\%(\.\|,\|:\|\;\)/ + +" Symbols +syntax region luaTable transparent matchgroup=luaBraces start="{" end="}" contains=@luaExpr fold +syntax region luaParen transparent matchgroup=luaParens start='(' end=')' contains=@luaExpr +syntax region luaBracket transparent matchgroup=luaBrackets start="\[" end="\]" contains=@luaExpr +syntax match luaComma "," +syntax match luaSemiCol ";" +syntax match luaOperator "[#<>=~^&|*/%+-]\|\.\." +syntax match luaEllipsis "\.\.\." + +" Catch errors caused by unbalanced brackets and keywords +syntax match luaError ")" +syntax match luaError "}" +syntax match luaError "\]" +syntax match luaError "\<\%(end\|else\|elseif\|then\|until\)\>" + +" Shebang at the start +syntax match luaComment "\%^#!.*" + +" Comments +syntax keyword luaCommentTodo contained TODO FIXME XXX TBD +syntax match luaComment "--.*$" contains=luaCommentTodo,luaDocTag,@Spell +syntax region luaCommentLong matchgroup=luaCommentLongTag start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaCommentTodo,luaDocTag,@Spell fold +syntax match luaDocTag contained "\s@\k\+" + +" Function calls +syntax match luaFuncCall /\k\+\%(\s*[{('"]\)\@=/ + +" Functions +syntax region luaFunc transparent matchgroup=luaFuncKeyword start="\<function\>" end="\<end\>" contains=@luaStat,luaFuncSig fold +syntax region luaFuncSig contained transparent start="\(\<function\>\)\@<=" end=")" contains=luaFuncId,luaFuncArgs keepend +syntax match luaFuncId contained "[^(]*(\@=" contains=luaFuncTable,luaFuncName +syntax match luaFuncTable contained /\k\+\%(\s*[.:]\)\@=/ +syntax match luaFuncName contained "[^(.:]*(\@=" +syntax region luaFuncArgs contained transparent matchgroup=luaFuncParens start=/(/ end=/)/ contains=@luaBase,luaFuncArgName,luaFuncArgComma,luaEllipsis +syntax match luaFuncArgName contained /\k\+/ +syntax match luaFuncArgComma contained /,/ + +" if ... then +syntax region luaIfThen transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=@luaExpr nextgroup=luaThenEnd skipwhite skipempty + +" then ... end +syntax region luaThenEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=@luaStat,luaElseifThen,luaElse fold + +" elseif ... then +syntax region luaElseifThen contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=@luaExpr + +" else +syntax keyword luaElse contained else + +" do ... end +syntax region luaBlock transparent matchgroup=luaRepeat start="\<do\>" end="\<end\>" contains=@luaStat fold + +" repeat ... until +syntax region luaLoop transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=@luaStat nextgroup=@luaExpr fold + +" while ... do +syntax region luaLoop transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=@luaExpr nextgroup=luaBlock skipwhite skipempty fold + +" for ... do and for ... in ... do +syntax region luaLoop transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=@luaExpr,luaIn nextgroup=luaBlock skipwhite skipempty +syntax keyword luaIn contained in + +" goto and labels +syntax keyword luaGoto goto nextgroup=luaGotoLabel skipwhite +syntax match luaGotoLabel "\k\+" contained +syntax match luaLabel "::\k\+::" + +" Other Keywords +syntax keyword luaConstant nil true false +syntax keyword luaBuiltIn _ENV self +syntax keyword luaLocal local +syntax keyword luaOperator and or not +syntax keyword luaStatement break return + +" Strings +syntax match luaStringSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# +syntax region luaStringLong matchgroup=luaStringLongTag start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell +syntax region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaStringSpecial,@Spell +syntax region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaStringSpecial,@Spell + +" Decimal constant +syntax match luaNumber "\<\d\+\>" +" Hex constant +syntax match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" +" Floating point constant, with dot, optional exponent +syntax match luaFloat "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>" +" Floating point constant, starting with a dot, optional exponent +syntax match luaFloat "\.\d\+\%([eE][-+]\=\d\+\)\=\>" +" Floating point constant, without dot, with exponent +syntax match luaFloat "\<\d\+[eE][-+]\=\d\+\>" + +" Special names from the Standard Library +syntax keyword luaSpecialTable +\ bit32 +\ coroutine +\ debug +\ io +\ math +\ os +\ package +\ string +\ table +\ utf8 + +syntax keyword luaSpecialValue +\ _G +\ _VERSION +\ assert +\ collectgarbage +\ dofile +\ error +\ getfenv +\ getmetatable +\ ipairs +\ load +\ loadfile +\ loadstring +\ module +\ next +\ pairs +\ pcall +\ print +\ rawequal +\ rawget +\ rawlen +\ rawset +\ require +\ select +\ setfenv +\ setmetatable +\ tonumber +\ tostring +\ type +\ unpack +\ xpcall + +" 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_lua_syn_inits") + if version < 508 + let did_lua_syn_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + HiLink luaParens Noise + HiLink luaBraces Structure + HiLink luaBrackets Noise + HiLink luaBuiltIn Special + HiLink luaComment Comment + HiLink luaCommentLong luaComment + HiLink luaCommentTodo Todo + HiLink luaCond Conditional + HiLink luaConstant Boolean + HiLink luaDocTag Underlined + HiLink luaEllipsis StorageClass + HiLink luaElse Conditional + HiLink luaError Error + HiLink luaFloat Float + HiLink luaFuncTable Function + HiLink luaFuncArgName Noise + HiLink luaFuncCall PreProc + HiLink luaFuncId Function + HiLink luaFuncKeyword Type + HiLink luaFuncName Function + HiLink luaFuncParens Noise + HiLink luaGoto luaStatement + HiLink luaGotoLabel Noise + HiLink luaIn Repeat + HiLink luaLabel Label + HiLink luaLocal Type + HiLink luaNumber Number + HiLink luaOperator Operator + HiLink luaRepeat Repeat + HiLink luaSemiCol Delimiter + HiLink luaSpecialTable Special + HiLink luaSpecialValue PreProc + HiLink luaStatement Statement + HiLink luaString String + HiLink luaStringLong luaString + HiLink luaStringSpecial SpecialChar + + delcommand HiLink +end + +let b:current_syntax = "lua" +if main_syntax == 'lua' + unlet main_syntax +endif + +endif |