mirror of
https://github.com/vim/vim
synced 2025-03-16 14:57:52 +01:00
254 lines
9.7 KiB
VimL
254 lines
9.7 KiB
VimL
" Vim syntax file
|
|
" Language: Lua 4.0 and Lua 5.0
|
|
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
|
|
" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
|
|
" Last Change: 2004 Aug 29
|
|
" Options: lua_version = 4 or 5 [default]
|
|
"
|
|
" For version 5.x: Clear all syntax items
|
|
" For version 6.x: Quit when a syntax file was already loaded
|
|
if version < 600
|
|
syntax clear
|
|
elseif exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
if !exists("lua_version")
|
|
let lua_version = 5
|
|
endif
|
|
|
|
syn case match
|
|
|
|
" Comments
|
|
syn keyword luaTodo contained TODO FIXME XXX
|
|
syn match luaComment "--.*$" contains=luaTodo
|
|
if lua_version > 4
|
|
syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
|
|
syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
|
|
endif
|
|
" First line may start with #!
|
|
syn match luaComment "\%^#!.*"
|
|
|
|
" catch errors caused by wrong parenthesis and wrong curly brackets or
|
|
" keywords placed outside their respective blocks
|
|
|
|
syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
|
|
syn match luaError ")"
|
|
syn match luaError "}"
|
|
syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
|
|
|
|
|
|
" Function declaration
|
|
syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
|
|
|
|
" if then else elseif end
|
|
syn keyword luaCond contained else
|
|
|
|
" then ... end
|
|
syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
|
|
|
|
" elseif ... then
|
|
syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
|
|
|
|
" if ... then
|
|
syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty
|
|
|
|
" do ... end
|
|
syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
|
|
|
|
" repeat ... until
|
|
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
|
|
|
|
" while ... do
|
|
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty
|
|
|
|
" for ... do and for ... in ... do
|
|
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
|
|
|
|
" Following 'else' example. This is another item to those
|
|
" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
|
|
syn keyword luaRepeat contained in
|
|
|
|
" other keywords
|
|
syn keyword luaStatement return local break
|
|
syn keyword luaOperator and or not
|
|
syn keyword luaConstant nil
|
|
if lua_version > 4
|
|
syn keyword luaConstant true false
|
|
endif
|
|
|
|
" Pre processor doesn't exist since Lua 4.0
|
|
" syn match luaPreProc "^\s*$\%(debug\|nodebug\|if\|ifnot\|end\|else\|endinput\)\>"
|
|
|
|
" Strings
|
|
syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
|
|
syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
|
|
syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
|
|
" Nested strings
|
|
syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
|
|
|
|
" integer number
|
|
syn match luaNumber "\<[0-9]\+\>"
|
|
" floating point number, with dot, optional exponent
|
|
syn match luaFloat "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
|
|
" floating point number, starting with a dot, optional exponent
|
|
syn match luaFloat "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
|
|
" floating point number, without dot, with exponent
|
|
syn match luaFloat "\<[0-9]\+e[-+]\=[0-9]\+\>"
|
|
|
|
" tables
|
|
syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
|
|
|
|
syn keyword luaFunc assert collectgarbage dofile error gcinfo next
|
|
syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
|
|
|
|
if lua_version == 4
|
|
syn keyword luaFunc _ALERT _ERRORMESSAGE
|
|
syn keyword luaFunc call copytagmethods dostring
|
|
syn keyword luaFunc foreach foreachi getglobal getn
|
|
syn keyword luaFunc gettagmethod globals newtag
|
|
syn keyword luaFunc setglobal settag settagmethod sort
|
|
syn keyword luaFunc tag tinsert tremove
|
|
syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
|
|
syn keyword luaFunc openfile closefile flush seek
|
|
syn keyword luaFunc setlocale execute remove rename tmpname
|
|
syn keyword luaFunc getenv date clock exit
|
|
syn keyword luaFunc readfrom writeto appendto read write
|
|
syn keyword luaFunc PI abs sin cos tan asin
|
|
syn keyword luaFunc acos atan atan2 ceil floor
|
|
syn keyword luaFunc mod frexp ldexp sqrt min max log
|
|
syn keyword luaFunc log10 exp deg rad random
|
|
syn keyword luaFunc randomseed strlen strsub strlower strupper
|
|
syn keyword luaFunc strchar strrep ascii strbyte
|
|
syn keyword luaFunc format strfind gsub
|
|
syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
|
|
else
|
|
syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
|
|
syn keyword luaFunc loadlib loadstring pairs pcall rawequal
|
|
syn keyword luaFunc require setfenv setmetatable unpack xpcall
|
|
syn keyword luaFunc LUA_PATH _LOADED _REQUIREDNAME
|
|
" Not sure if all these functions need to be highlighted...
|
|
syn match luaFunc /coroutine\.create/
|
|
syn match luaFunc /coroutine\.resume/
|
|
syn match luaFunc /coroutine\.status/
|
|
syn match luaFunc /coroutine\.wrap/
|
|
syn match luaFunc /coroutine\.yield/
|
|
syn match luaFunc /string\.byte/
|
|
syn match luaFunc /string\.char/
|
|
syn match luaFunc /string\.dump/
|
|
syn match luaFunc /string\.find/
|
|
syn match luaFunc /string\.len/
|
|
syn match luaFunc /string\.lower/
|
|
syn match luaFunc /string\.rep/
|
|
syn match luaFunc /string\.sub/
|
|
syn match luaFunc /string\.upper/
|
|
syn match luaFunc /string\.format/
|
|
syn match luaFunc /string\.gfind/
|
|
syn match luaFunc /string\.gsub/
|
|
syn match luaFunc /table\.concat/
|
|
syn match luaFunc /table\.foreach/
|
|
syn match luaFunc /table\.foreachi/
|
|
syn match luaFunc /table\.getn/
|
|
syn match luaFunc /table\.sort/
|
|
syn match luaFunc /table\.insert/
|
|
syn match luaFunc /table\.remove/
|
|
syn match luaFunc /table\.setn/
|
|
syn match luaFunc /math\.abs/
|
|
syn match luaFunc /math\.acos/
|
|
syn match luaFunc /math\.asin/
|
|
syn match luaFunc /math\.atan/
|
|
syn match luaFunc /math\.atan2/
|
|
syn match luaFunc /math\.ceil/
|
|
syn match luaFunc /math\.cos/
|
|
syn match luaFunc /math\.deg/
|
|
syn match luaFunc /math\.exp/
|
|
syn match luaFunc /math\.floor/
|
|
syn match luaFunc /math\.log/
|
|
syn match luaFunc /math\.log10/
|
|
syn match luaFunc /math\.max/
|
|
syn match luaFunc /math\.min/
|
|
syn match luaFunc /math\.mod/
|
|
syn match luaFunc /math\.pow/
|
|
syn match luaFunc /math\.rad/
|
|
syn match luaFunc /math\.sin/
|
|
syn match luaFunc /math\.sqrt/
|
|
syn match luaFunc /math\.tan/
|
|
syn match luaFunc /math\.frexp/
|
|
syn match luaFunc /math\.ldexp/
|
|
syn match luaFunc /math\.random/
|
|
syn match luaFunc /math\.randomseed/
|
|
syn match luaFunc /math\.pi/
|
|
syn match luaFunc /io\.stdin/
|
|
syn match luaFunc /io\.stdout/
|
|
syn match luaFunc /io\.stderr/
|
|
syn match luaFunc /io\.close/
|
|
syn match luaFunc /io\.flush/
|
|
syn match luaFunc /io\.input/
|
|
syn match luaFunc /io\.lines/
|
|
syn match luaFunc /io\.open/
|
|
syn match luaFunc /io\.output/
|
|
syn match luaFunc /io\.popen/
|
|
syn match luaFunc /io\.read/
|
|
syn match luaFunc /io\.tmpfile/
|
|
syn match luaFunc /io\.type/
|
|
syn match luaFunc /io\.write/
|
|
syn match luaFunc /os\.clock/
|
|
syn match luaFunc /os\.date/
|
|
syn match luaFunc /os\.difftime/
|
|
syn match luaFunc /os\.execute/
|
|
syn match luaFunc /os\.exit/
|
|
syn match luaFunc /os\.getenv/
|
|
syn match luaFunc /os\.remove/
|
|
syn match luaFunc /os\.rename/
|
|
syn match luaFunc /os\.setlocale/
|
|
syn match luaFunc /os\.time/
|
|
syn match luaFunc /os\.tmpname/
|
|
syn match luaFunc /debug\.debug/
|
|
syn match luaFunc /debug\.gethook/
|
|
syn match luaFunc /debug\.getinfo/
|
|
syn match luaFunc /debug\.getlocal/
|
|
syn match luaFunc /debug\.getupvalue/
|
|
syn match luaFunc /debug\.setlocal/
|
|
syn match luaFunc /debug\.setupvalue/
|
|
syn match luaFunc /debug\.sethook/
|
|
syn match luaFunc /debug\.traceback/
|
|
endif
|
|
|
|
"syncing method
|
|
syn sync minlines=100
|
|
|
|
" 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_syntax_inits")
|
|
if version < 508
|
|
let did_lua_syntax_inits = 1
|
|
command -nargs=+ HiLink hi link <args>
|
|
else
|
|
command -nargs=+ HiLink hi def link <args>
|
|
endif
|
|
|
|
HiLink luaStatement Statement
|
|
HiLink luaRepeat Repeat
|
|
HiLink luaString String
|
|
HiLink luaString2 String
|
|
HiLink luaNumber Number
|
|
HiLink luaFloat Float
|
|
HiLink luaOperator Operator
|
|
HiLink luaConstant Constant
|
|
HiLink luaCond Conditional
|
|
HiLink luaFunction Function
|
|
HiLink luaComment Comment
|
|
HiLink luaTodo Todo
|
|
HiLink luaTable Structure
|
|
HiLink luaError Error
|
|
HiLink luaSpecial SpecialChar
|
|
" HiLink luaPreProc PreProc
|
|
HiLink luaFunc Identifier
|
|
|
|
delcommand HiLink
|
|
endif
|
|
|
|
let b:current_syntax = "lua"
|
|
|
|
" vim: noet ts=8
|