diff runtime/syntax/lua.vim @ 838:8e5830943bff v7.0e04

updated for version 7.0e04
author vimboss
date Thu, 20 Apr 2006 22:17:20 +0000
parents 6bb1fa855dc9
children e63691e7c504
line wrap: on
line diff
--- a/runtime/syntax/lua.vim
+++ b/runtime/syntax/lua.vim
@@ -1,297 +1,299 @@
-" Vim syntax file
-" Language:	Lua 4.0, Lua 5.0 and Lua 5.1
-" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
-" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
-" Last Change:	2006 Apr. 19
-" Options:	lua_version = 4 or 5
-"		lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
-"		default 5.1
-
-" 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")
-  " Default is lua 5.1
-  let lua_version = 5
-  let lua_subversion = 1
-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
-if lua_version == 5 && lua_subversion == 0
-  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
-  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\]"
-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
-
-" 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
-if (lua_version == 5 && lua_subversion == 0) || lua_version < 5
-  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
-elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
-  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
-endif
-
-" 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
-elseif lua_version == 5
-  " Not sure if all these functions need to be highlighted...
-  syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
-  syn keyword luaFunc loadstring pairs pcall rawequal
-  syn keyword luaFunc require setfenv setmetatable unpack xpcall
-  if lua_subversion == 0
-    syn keyword luaFunc loadlib LUA_PATH _LOADED _REQUIREDNAME
-  elseif lua_subversion == 1
-    syn keyword luaFunc load module select
-    syn match luaFunc /package\.cpath/
-    syn match luaFunc /package\.loaded/
-    syn match luaFunc /package\.loadlib/
-    syn match luaFunc /package\.path/
-    syn match luaFunc /package\.preload/
-    syn match luaFunc /package\.seeall/
-    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\.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\.gsub/
-  if lua_subversion == 0
-    syn match luaFunc /string\.gfind/
-  elseif lua_subversion == 1
-    syn match luaFunc /string\.gmatch/
-    syn match luaFunc /string\.match/
-    syn match luaFunc /string\.reverse/
-    syn match luaFunc /table\.maxn/
-  endif
-  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\.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\.log10/
-  syn match   luaFunc /math\.max/
-  syn match   luaFunc /math\.min/
-  if lua_subversion == 0
-    syn match luaFunc /math\.mod/
-  elseif lua_subversion == 1
-    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\.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/
-  if lua_subversion == 1
-    syn match luaFunc /debug\.getfenv/
-    syn match luaFunc /debug\.getmetatable/
-    syn match luaFunc /debug\.getregistry/
-    syn match luaFunc /debug\.setfenv/
-    syn match luaFunc /debug\.setmetatable/
-  endif
-endif
-
-" 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 luaFunc		Identifier
-
-  delcommand HiLink
-endif
-
-let b:current_syntax = "lua"
-
-" vim: et ts=8
+" Vim syntax file
+" Language:	Lua 4.0, Lua 5.0 and Lua 5.1
+" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol com br>
+" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
+" Last Change:	2006 Apr 21
+" Options:	lua_version = 4 or 5
+"		lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
+"		default 5.1
+
+" 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")
+  " Default is lua 5.1
+  let lua_version = 5
+  let lua_subversion = 1
+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
+if lua_version == 5 && lua_subversion == 0
+  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
+  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\]"
+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
+
+" Strings
+if lua_version < 5
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+elseif lua_version == 5 && lua_subversion == 0
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
+  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
+elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
+endif
+syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
+syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
+
+" 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 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
+  " Not sure if all these functions need to be highlighted...
+  syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
+  syn keyword luaFunc loadstring pairs pcall rawequal
+  syn keyword luaFunc require setfenv setmetatable unpack xpcall
+  if lua_subversion == 0
+    syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
+  elseif lua_subversion == 1
+    syn keyword luaFunc load module select
+    syn match luaFunc /package\.cpath/
+    syn match luaFunc /package\.loaded/
+    syn match luaFunc /package\.loadlib/
+    syn match luaFunc /package\.path/
+    syn match luaFunc /package\.preload/
+    syn match luaFunc /package\.seeall/
+    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\.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\.gsub/
+  if lua_subversion == 0
+    syn match luaFunc /string\.gfind/
+    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 /string\.gmatch/
+    syn match luaFunc /string\.match/
+    syn match luaFunc /string\.reverse/
+    syn match luaFunc /table\.maxn/
+  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\.log10/
+  syn match   luaFunc /math\.max/
+  syn match   luaFunc /math\.min/
+  if lua_subversion == 0
+    syn match luaFunc /math\.mod/
+  elseif lua_subversion == 1
+    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\.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/
+  if lua_subversion == 1
+    syn match luaFunc /debug\.getfenv/
+    syn match luaFunc /debug\.getmetatable/
+    syn match luaFunc /debug\.getregistry/
+    syn match luaFunc /debug\.setfenv/
+    syn match luaFunc /debug\.setmetatable/
+  endif
+endif
+
+" 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 luaFunc		Identifier
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "lua"
+
+" vim: et ts=8