123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- " Vim syntax file
- " Language: Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2
- " Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
- " First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
- " Last Change: 2012 Aug 12
- " Options: lua_version = 4 or 5
- " lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2)
- " default 5.2
- " quit when a syntax file was already loaded
- if exists("b:current_syntax")
- finish
- endif
- let s:cpo_save = &cpo
- set cpo&vim
- if !exists("lua_version")
- " Default is lua 5.2
- let lua_version = 5
- let lua_subversion = 2
- elseif !exists("lua_subversion")
- " lua_version exists, but lua_subversion doesn't. So, set it to 0
- let lua_subversion = 0
- endif
- syn case match
- " syncing method
- syn sync minlines=100
- " Comments
- syn keyword luaTodo contained TODO FIXME XXX
- syn match luaComment "--.*$" contains=luaTodo,@Spell
- if lua_version == 5 && lua_subversion == 0
- syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
- syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
- elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
- " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
- syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
- 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,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
- syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
- syn match luaParenError ")"
- syn match luaBraceError "}"
- syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
- " function ... end
- syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
- " if ... then
- syn region luaIfThen transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty
- " then ... end
- syn region luaThenEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn
- " elseif ... then
- syn region luaElseifThen contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
- " else
- syn keyword luaElse contained else
- " do ... end
- syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
- " repeat ... until
- syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
- " while ... do
- syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty
- " for ... do and for ... in ... do
- syn region luaLoopBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty
- syn keyword luaIn contained in
- " other keywords
- syn keyword luaStatement return local break
- if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
- syn keyword luaStatement goto
- syn match luaLabel "::\I\i*::"
- endif
- syn keyword luaOperator and or not
- syn keyword luaConstant nil
- if lua_version > 4
- syn keyword luaConstant true false
- endif
- " Strings
- if lua_version < 5
- syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\[[:digit:]]\{,3}"
- elseif lua_version == 5
- if lua_subversion == 0
- syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
- syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
- else
- if lua_subversion == 1
- syn match luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}#
- else " Lua 5.2
- syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}#
- endif
- syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
- endif
- endif
- syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
- syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
- " integer number
- syn match luaNumber "\<\d\+\>"
- " floating point number, with dot, optional exponent
- syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>"
- " floating point number, starting with a dot, optional exponent
- syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>"
- " floating point number, without dot, with exponent
- syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>"
- " hex numbers
- if lua_version >= 5
- if lua_subversion == 1
- syn match luaNumber "\<0[xX]\x\+\>"
- elseif lua_subversion >= 2
- syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>"
- endif
- endif
- syn keyword luaFunc assert collectgarbage dofile error next
- syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
- if lua_version == 4
- syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
- 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
- elseif lua_version == 5
- syn keyword luaFunc getmetatable setmetatable
- syn keyword luaFunc ipairs pairs
- syn keyword luaFunc pcall xpcall
- syn keyword luaFunc _G loadfile rawequal require
- if lua_subversion == 0
- syn keyword luaFunc getfenv setfenv
- syn keyword luaFunc loadstring unpack
- syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
- else
- syn keyword luaFunc load select
- syn match luaFunc /\<package\.cpath\>/
- syn match luaFunc /\<package\.loaded\>/
- syn match luaFunc /\<package\.loadlib\>/
- syn match luaFunc /\<package\.path\>/
- if lua_subversion == 1
- syn keyword luaFunc getfenv setfenv
- syn keyword luaFunc loadstring module unpack
- syn match luaFunc /\<package\.loaders\>/
- syn match luaFunc /\<package\.preload\>/
- syn match luaFunc /\<package\.seeall\>/
- elseif lua_subversion == 2
- syn keyword luaFunc _ENV rawlen
- syn match luaFunc /\<package\.config\>/
- syn match luaFunc /\<package\.preload\>/
- syn match luaFunc /\<package\.searchers\>/
- syn match luaFunc /\<package\.searchpath\>/
- syn match luaFunc /\<bit32\.arshift\>/
- syn match luaFunc /\<bit32\.band\>/
- syn match luaFunc /\<bit32\.bnot\>/
- syn match luaFunc /\<bit32\.bor\>/
- syn match luaFunc /\<bit32\.btest\>/
- syn match luaFunc /\<bit32\.bxor\>/
- syn match luaFunc /\<bit32\.extract\>/
- syn match luaFunc /\<bit32\.lrotate\>/
- syn match luaFunc /\<bit32\.lshift\>/
- syn match luaFunc /\<bit32\.replace\>/
- syn match luaFunc /\<bit32\.rrotate\>/
- syn match luaFunc /\<bit32\.rshift\>/
- endif
- syn match luaFunc /\<coroutine\.running\>/
- endif
- 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\.format\>/
- syn match luaFunc /\<string\.gsub\>/
- 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\>/
- if lua_subversion == 0
- syn match luaFunc /\<string\.gfind\>/
- else
- syn match luaFunc /\<string\.gmatch\>/
- syn match luaFunc /\<string\.match\>/
- syn match luaFunc /\<string\.reverse\>/
- endif
- if lua_subversion == 0
- syn match luaFunc /\<table\.getn\>/
- syn match luaFunc /\<table\.setn\>/
- syn match luaFunc /\<table\.foreach\>/
- syn match luaFunc /\<table\.foreachi\>/
- elseif lua_subversion == 1
- syn match luaFunc /\<table\.maxn\>/
- elseif lua_subversion == 2
- syn match luaFunc /\<table\.pack\>/
- syn match luaFunc /\<table\.unpack\>/
- endif
- syn match luaFunc /\<table\.concat\>/
- syn match luaFunc /\<table\.sort\>/
- syn match luaFunc /\<table\.insert\>/
- syn match luaFunc /\<table\.remove\>/
- 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\.sin\>/
- syn match luaFunc /\<math\.cos\>/
- syn match luaFunc /\<math\.tan\>/
- syn match luaFunc /\<math\.deg\>/
- syn match luaFunc /\<math\.exp\>/
- syn match luaFunc /\<math\.floor\>/
- syn match luaFunc /\<math\.log\>/
- syn match luaFunc /\<math\.max\>/
- syn match luaFunc /\<math\.min\>/
- if lua_subversion == 0
- syn match luaFunc /\<math\.mod\>/
- syn match luaFunc /\<math\.log10\>/
- else
- if lua_subversion == 1
- syn match luaFunc /\<math\.log10\>/
- endif
- syn match luaFunc /\<math\.huge\>/
- syn match luaFunc /\<math\.fmod\>/
- syn match luaFunc /\<math\.modf\>/
- syn match luaFunc /\<math\.cosh\>/
- syn match luaFunc /\<math\.sinh\>/
- syn match luaFunc /\<math\.tanh\>/
- endif
- syn match luaFunc /\<math\.pow\>/
- syn match luaFunc /\<math\.rad\>/
- syn match luaFunc /\<math\.sqrt\>/
- 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\.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\.stderr\>/
- syn match luaFunc /\<io\.stdin\>/
- syn match luaFunc /\<io\.stdout\>/
- 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\>/
- if lua_subversion == 1
- syn match luaFunc /\<debug\.getfenv\>/
- syn match luaFunc /\<debug\.setfenv\>/
- syn match luaFunc /\<debug\.getmetatable\>/
- syn match luaFunc /\<debug\.setmetatable\>/
- syn match luaFunc /\<debug\.getregistry\>/
- elseif lua_subversion == 2
- syn match luaFunc /\<debug\.getmetatable\>/
- syn match luaFunc /\<debug\.setmetatable\>/
- syn match luaFunc /\<debug\.getregistry\>/
- syn match luaFunc /\<debug\.getuservalue\>/
- syn match luaFunc /\<debug\.setuservalue\>/
- syn match luaFunc /\<debug\.upvalueid\>/
- syn match luaFunc /\<debug\.upvaluejoin\>/
- endif
- endif
- " Define the default highlighting.
- " Only when an item doesn't have highlighting yet
- hi def link luaStatement Statement
- hi def link luaRepeat Repeat
- hi def link luaFor Repeat
- hi def link luaString String
- hi def link luaString2 String
- hi def link luaNumber Number
- hi def link luaOperator Operator
- hi def link luaIn Operator
- hi def link luaConstant Constant
- hi def link luaCond Conditional
- hi def link luaElse Conditional
- hi def link luaFunction Function
- hi def link luaComment Comment
- hi def link luaTodo Todo
- hi def link luaTable Structure
- hi def link luaError Error
- hi def link luaParenError Error
- hi def link luaBraceError Error
- hi def link luaSpecial SpecialChar
- hi def link luaFunc Identifier
- hi def link luaLabel Label
- let b:current_syntax = "lua"
- let &cpo = s:cpo_save
- unlet s:cpo_save
- " vim: et ts=8 sw=2
|