xref: /vim-8.2.3635/runtime/syntax/lua.vim (revision 9b451250)
1071d4279SBram Moolenaar" Vim syntax file
2b6b046b2SBram Moolenaar" Language:	Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2
3b6b046b2SBram Moolenaar" Maintainer:	Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
4d4755bb0SBram Moolenaar" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
5*9b451250SBram Moolenaar" Last Change:	2012 Aug 12
68424a624SBram Moolenaar" Options:	lua_version = 4 or 5
7b6b046b2SBram Moolenaar"		lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2)
8b6b046b2SBram Moolenaar"		default 5.2
98424a624SBram Moolenaar
10071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
11071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded
12071d4279SBram Moolenaarif version < 600
13071d4279SBram Moolenaar  syntax clear
14071d4279SBram Moolenaarelseif exists("b:current_syntax")
15071d4279SBram Moolenaar  finish
16071d4279SBram Moolenaarendif
17071d4279SBram Moolenaar
185dc6252dSBram Moolenaarlet s:cpo_save = &cpo
195dc6252dSBram Moolenaarset cpo&vim
205dc6252dSBram Moolenaar
21071d4279SBram Moolenaarif !exists("lua_version")
22b6b046b2SBram Moolenaar  " Default is lua 5.2
23071d4279SBram Moolenaar  let lua_version = 5
24b6b046b2SBram Moolenaar  let lua_subversion = 2
258424a624SBram Moolenaarelseif !exists("lua_subversion")
268424a624SBram Moolenaar  " lua_version exists, but lua_subversion doesn't. So, set it to 0
278424a624SBram Moolenaar  let lua_subversion = 0
28071d4279SBram Moolenaarendif
29071d4279SBram Moolenaar
30071d4279SBram Moolenaarsyn case match
31071d4279SBram Moolenaar
328424a624SBram Moolenaar" syncing method
338424a624SBram Moolenaarsyn sync minlines=100
348424a624SBram Moolenaar
35071d4279SBram Moolenaar" Comments
36071d4279SBram Moolenaarsyn keyword luaTodo            contained TODO FIXME XXX
379964e468SBram Moolenaarsyn match   luaComment         "--.*$" contains=luaTodo,@Spell
388424a624SBram Moolenaarif lua_version == 5 && lua_subversion == 0
399964e468SBram Moolenaar  syn region luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
40071d4279SBram Moolenaar  syn region luaInnerComment   contained transparent start="\[\[" end="\]\]"
418424a624SBram Moolenaarelseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
42fc1421ebSBram Moolenaar  " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
439964e468SBram Moolenaar  syn region luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
44071d4279SBram Moolenaarendif
458424a624SBram Moolenaar
46071d4279SBram Moolenaar" First line may start with #!
47071d4279SBram Moolenaarsyn match luaComment "\%^#!.*"
48071d4279SBram Moolenaar
49071d4279SBram Moolenaar" catch errors caused by wrong parenthesis and wrong curly brackets or
50071d4279SBram Moolenaar" keywords placed outside their respective blocks
51*9b451250SBram Moolenaarsyn region luaParen      transparent                     start='(' end=')' contains=ALLBUT,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
52*9b451250SBram Moolenaarsyn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement
53071d4279SBram Moolenaar
54b6b046b2SBram Moolenaarsyn match  luaParenError ")"
55*9b451250SBram Moolenaarsyn match  luaBraceError "}"
56d4755bb0SBram Moolenaarsyn match  luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
57071d4279SBram Moolenaar
58*9b451250SBram Moolenaar" function ... end
59*9b451250SBram Moolenaarsyn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
60071d4279SBram Moolenaar
61071d4279SBram Moolenaar" if ... then
62*9b451250SBram Moolenaarsyn region luaIfThen transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4           contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty
63*9b451250SBram Moolenaar
64*9b451250SBram Moolenaar" then ... end
65*9b451250SBram Moolenaarsyn region luaThenEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn
66*9b451250SBram Moolenaar
67*9b451250SBram Moolenaar" elseif ... then
68*9b451250SBram Moolenaarsyn region luaElseifThen contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
69*9b451250SBram Moolenaar
70*9b451250SBram Moolenaar" else
71*9b451250SBram Moolenaarsyn keyword luaElse contained else
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" do ... end
74*9b451250SBram Moolenaarsyn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>"          contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
75*9b451250SBram Moolenaar
76071d4279SBram Moolenaar" repeat ... until
77*9b451250SBram Moolenaarsyn region luaLoopBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>"   contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" while ... do
80*9b451250SBram Moolenaarsyn 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
81071d4279SBram Moolenaar
82071d4279SBram Moolenaar" for ... do and for ... in ... do
83*9b451250SBram Moolenaarsyn region luaLoopBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2   contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty
84071d4279SBram Moolenaar
85*9b451250SBram Moolenaarsyn keyword luaIn contained in
86071d4279SBram Moolenaar
87071d4279SBram Moolenaar" other keywords
88071d4279SBram Moolenaarsyn keyword luaStatement return local break
89b6b046b2SBram Moolenaarif lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
90b6b046b2SBram Moolenaar  syn keyword luaStatement goto
91b6b046b2SBram Moolenaar  syn match luaLabel "::\I\i*::"
92b6b046b2SBram Moolenaarendif
93071d4279SBram Moolenaarsyn keyword luaOperator and or not
94071d4279SBram Moolenaarsyn keyword luaConstant nil
95071d4279SBram Moolenaarif lua_version > 4
96071d4279SBram Moolenaar  syn keyword luaConstant true false
97071d4279SBram Moolenaarendif
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar" Strings
100fc1421ebSBram Moolenaarif lua_version < 5
101b6b046b2SBram Moolenaar  syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\[[:digit:]]\{,3}"
102b6b046b2SBram Moolenaarelseif lua_version == 5
103b6b046b2SBram Moolenaar  if lua_subversion == 0
104b6b046b2SBram Moolenaar    syn match  luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
1059964e468SBram Moolenaar    syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
106b6b046b2SBram Moolenaar  else
107b6b046b2SBram Moolenaar    if lua_subversion == 1
108b6b046b2SBram Moolenaar      syn match  luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}#
109b6b046b2SBram Moolenaar    else " Lua 5.2
110b6b046b2SBram Moolenaar      syn match  luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}#
111b6b046b2SBram Moolenaar    endif
1129964e468SBram Moolenaar    syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
1138424a624SBram Moolenaar  endif
114b6b046b2SBram Moolenaarendif
1159964e468SBram Moolenaarsyn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
1169964e468SBram Moolenaarsyn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
117071d4279SBram Moolenaar
118071d4279SBram Moolenaar" integer number
1199964e468SBram Moolenaarsyn match luaNumber "\<\d\+\>"
120071d4279SBram Moolenaar" floating point number, with dot, optional exponent
121b6b046b2SBram Moolenaarsyn match luaNumber  "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>"
122071d4279SBram Moolenaar" floating point number, starting with a dot, optional exponent
123b6b046b2SBram Moolenaarsyn match luaNumber  "\.\d\+\%([eE][-+]\=\d\+\)\=\>"
124071d4279SBram Moolenaar" floating point number, without dot, with exponent
125b6b046b2SBram Moolenaarsyn match luaNumber  "\<\d\+[eE][-+]\=\d\+\>"
1269964e468SBram Moolenaar
1279964e468SBram Moolenaar" hex numbers
128b6b046b2SBram Moolenaarif lua_version >= 5
129b6b046b2SBram Moolenaar  if lua_subversion == 1
130b6b046b2SBram Moolenaar    syn match luaNumber "\<0[xX]\x\+\>"
131b6b046b2SBram Moolenaar  elseif lua_subversion >= 2
132b6b046b2SBram Moolenaar    syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>"
133b6b046b2SBram Moolenaar  endif
1349964e468SBram Moolenaarendif
135071d4279SBram Moolenaar
136fc1421ebSBram Moolenaarsyn keyword luaFunc assert collectgarbage dofile error next
137071d4279SBram Moolenaarsyn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
138071d4279SBram Moolenaar
139071d4279SBram Moolenaarif lua_version == 4
140fc1421ebSBram Moolenaar  syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
141071d4279SBram Moolenaar  syn keyword luaFunc call copytagmethods dostring
142071d4279SBram Moolenaar  syn keyword luaFunc foreach foreachi getglobal getn
143071d4279SBram Moolenaar  syn keyword luaFunc gettagmethod globals newtag
144071d4279SBram Moolenaar  syn keyword luaFunc setglobal settag settagmethod sort
145071d4279SBram Moolenaar  syn keyword luaFunc tag tinsert tremove
146071d4279SBram Moolenaar  syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
147071d4279SBram Moolenaar  syn keyword luaFunc openfile closefile flush seek
148071d4279SBram Moolenaar  syn keyword luaFunc setlocale execute remove rename tmpname
149071d4279SBram Moolenaar  syn keyword luaFunc getenv date clock exit
150071d4279SBram Moolenaar  syn keyword luaFunc readfrom writeto appendto read write
151071d4279SBram Moolenaar  syn keyword luaFunc PI abs sin cos tan asin
152071d4279SBram Moolenaar  syn keyword luaFunc acos atan atan2 ceil floor
153071d4279SBram Moolenaar  syn keyword luaFunc mod frexp ldexp sqrt min max log
154071d4279SBram Moolenaar  syn keyword luaFunc log10 exp deg rad random
155071d4279SBram Moolenaar  syn keyword luaFunc randomseed strlen strsub strlower strupper
156071d4279SBram Moolenaar  syn keyword luaFunc strchar strrep ascii strbyte
157071d4279SBram Moolenaar  syn keyword luaFunc format strfind gsub
158071d4279SBram Moolenaar  syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
1598424a624SBram Moolenaarelseif lua_version == 5
160b6b046b2SBram Moolenaar  syn keyword luaFunc getmetatable setmetatable
161b6b046b2SBram Moolenaar  syn keyword luaFunc ipairs pairs
162b6b046b2SBram Moolenaar  syn keyword luaFunc pcall xpcall
163b6b046b2SBram Moolenaar  syn keyword luaFunc _G loadfile rawequal require
1648424a624SBram Moolenaar  if lua_subversion == 0
165b6b046b2SBram Moolenaar    syn keyword luaFunc getfenv setfenv
166b6b046b2SBram Moolenaar    syn keyword luaFunc loadstring unpack
167fc1421ebSBram Moolenaar    syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
168b6b046b2SBram Moolenaar  else
169b6b046b2SBram Moolenaar    syn keyword luaFunc load select
170b6b046b2SBram Moolenaar    syn match   luaFunc /\<package\.cpath\>/
171b6b046b2SBram Moolenaar    syn match   luaFunc /\<package\.loaded\>/
172b6b046b2SBram Moolenaar    syn match   luaFunc /\<package\.loadlib\>/
173b6b046b2SBram Moolenaar    syn match   luaFunc /\<package\.path\>/
1748424a624SBram Moolenaar    if lua_subversion == 1
175b6b046b2SBram Moolenaar      syn keyword luaFunc getfenv setfenv
176b6b046b2SBram Moolenaar      syn keyword luaFunc loadstring module unpack
177b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.loaders\>/
178b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.preload\>/
179b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.seeall\>/
180b6b046b2SBram Moolenaar    elseif lua_subversion == 2
181b6b046b2SBram Moolenaar      syn keyword luaFunc _ENV rawlen
182b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.config\>/
183b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.preload\>/
184b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.searchers\>/
185b6b046b2SBram Moolenaar      syn match   luaFunc /\<package\.searchpath\>/
186b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.arshift\>/
187b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.band\>/
188b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.bnot\>/
189b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.bor\>/
190b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.btest\>/
191b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.bxor\>/
192b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.extract\>/
193b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.lrotate\>/
194b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.lshift\>/
195b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.replace\>/
196b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.rrotate\>/
197b6b046b2SBram Moolenaar      syn match   luaFunc /\<bit32\.rshift\>/
198b6b046b2SBram Moolenaar    endif
199b6b046b2SBram Moolenaar    syn match luaFunc /\<coroutine\.running\>/
200b6b046b2SBram Moolenaar  endif
201b6b046b2SBram Moolenaar  syn match   luaFunc /\<coroutine\.create\>/
202b6b046b2SBram Moolenaar  syn match   luaFunc /\<coroutine\.resume\>/
203b6b046b2SBram Moolenaar  syn match   luaFunc /\<coroutine\.status\>/
204b6b046b2SBram Moolenaar  syn match   luaFunc /\<coroutine\.wrap\>/
205b6b046b2SBram Moolenaar  syn match   luaFunc /\<coroutine\.yield\>/
206b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.byte\>/
207b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.char\>/
208b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.dump\>/
209b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.find\>/
210b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.format\>/
211b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.gsub\>/
212b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.len\>/
213b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.lower\>/
214b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.rep\>/
215b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.sub\>/
216b6b046b2SBram Moolenaar  syn match   luaFunc /\<string\.upper\>/
217b6b046b2SBram Moolenaar  if lua_subversion == 0
218b6b046b2SBram Moolenaar    syn match luaFunc /\<string\.gfind\>/
219b6b046b2SBram Moolenaar  else
220b6b046b2SBram Moolenaar    syn match luaFunc /\<string\.gmatch\>/
221b6b046b2SBram Moolenaar    syn match luaFunc /\<string\.match\>/
222b6b046b2SBram Moolenaar    syn match luaFunc /\<string\.reverse\>/
223b6b046b2SBram Moolenaar  endif
224b6b046b2SBram Moolenaar  if lua_subversion == 0
225b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.getn\>/
226b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.setn\>/
227b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.foreach\>/
228b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.foreachi\>/
229b6b046b2SBram Moolenaar  elseif lua_subversion == 1
230b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.maxn\>/
231b6b046b2SBram Moolenaar  elseif lua_subversion == 2
232b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.pack\>/
233b6b046b2SBram Moolenaar    syn match luaFunc /\<table\.unpack\>/
234b6b046b2SBram Moolenaar  endif
235b6b046b2SBram Moolenaar  syn match   luaFunc /\<table\.concat\>/
236b6b046b2SBram Moolenaar  syn match   luaFunc /\<table\.sort\>/
237b6b046b2SBram Moolenaar  syn match   luaFunc /\<table\.insert\>/
238b6b046b2SBram Moolenaar  syn match   luaFunc /\<table\.remove\>/
239b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.abs\>/
240b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.acos\>/
241b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.asin\>/
242b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.atan\>/
243b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.atan2\>/
244b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.ceil\>/
245b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.sin\>/
246b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.cos\>/
247b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.tan\>/
248b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.deg\>/
249b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.exp\>/
250b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.floor\>/
251b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.log\>/
252b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.max\>/
253b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.min\>/
254b6b046b2SBram Moolenaar  if lua_subversion == 0
255b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.mod\>/
256b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.log10\>/
257b6b046b2SBram Moolenaar  else
258b6b046b2SBram Moolenaar    if lua_subversion == 1
259b6b046b2SBram Moolenaar      syn match luaFunc /\<math\.log10\>/
260b6b046b2SBram Moolenaar    endif
261b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.huge\>/
262b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.fmod\>/
263b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.modf\>/
264b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.cosh\>/
265b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.sinh\>/
266b6b046b2SBram Moolenaar    syn match luaFunc /\<math\.tanh\>/
267b6b046b2SBram Moolenaar  endif
268b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.pow\>/
269b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.rad\>/
270b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.sqrt\>/
271b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.frexp\>/
272b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.ldexp\>/
273b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.random\>/
274b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.randomseed\>/
275b6b046b2SBram Moolenaar  syn match   luaFunc /\<math\.pi\>/
276b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.close\>/
277b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.flush\>/
278b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.input\>/
279b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.lines\>/
280b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.open\>/
281b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.output\>/
282b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.popen\>/
283b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.read\>/
284b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.stderr\>/
285b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.stdin\>/
286b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.stdout\>/
287b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.tmpfile\>/
288b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.type\>/
289b6b046b2SBram Moolenaar  syn match   luaFunc /\<io\.write\>/
290b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.clock\>/
291b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.date\>/
292b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.difftime\>/
293b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.execute\>/
294b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.exit\>/
295b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.getenv\>/
296b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.remove\>/
297b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.rename\>/
298b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.setlocale\>/
299b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.time\>/
300b6b046b2SBram Moolenaar  syn match   luaFunc /\<os\.tmpname\>/
301b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.debug\>/
302b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.gethook\>/
303b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.getinfo\>/
304b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.getlocal\>/
305b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.getupvalue\>/
306b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.setlocal\>/
307b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.setupvalue\>/
308b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.sethook\>/
309b6b046b2SBram Moolenaar  syn match   luaFunc /\<debug\.traceback\>/
310b6b046b2SBram Moolenaar  if lua_subversion == 1
311b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getfenv\>/
312b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.setfenv\>/
313b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getmetatable\>/
314b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.setmetatable\>/
315b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getregistry\>/
316b6b046b2SBram Moolenaar  elseif lua_subversion == 2
317b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getmetatable\>/
318b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.setmetatable\>/
319b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getregistry\>/
320b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.getuservalue\>/
321b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.setuservalue\>/
322b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.upvalueid\>/
323b6b046b2SBram Moolenaar    syn match luaFunc /\<debug\.upvaluejoin\>/
324071d4279SBram Moolenaar  endif
3258424a624SBram Moolenaarendif
326071d4279SBram Moolenaar
327071d4279SBram Moolenaar" Define the default highlighting.
328071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
329071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
330071d4279SBram Moolenaarif version >= 508 || !exists("did_lua_syntax_inits")
331071d4279SBram Moolenaar  if version < 508
332071d4279SBram Moolenaar    let did_lua_syntax_inits = 1
333071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
334071d4279SBram Moolenaar  else
335071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
336071d4279SBram Moolenaar  endif
337071d4279SBram Moolenaar
338071d4279SBram Moolenaar  HiLink luaStatement		Statement
339071d4279SBram Moolenaar  HiLink luaRepeat		Repeat
340b6b046b2SBram Moolenaar  HiLink luaFor			Repeat
341071d4279SBram Moolenaar  HiLink luaString		String
342071d4279SBram Moolenaar  HiLink luaString2		String
343071d4279SBram Moolenaar  HiLink luaNumber		Number
344071d4279SBram Moolenaar  HiLink luaOperator		Operator
345*9b451250SBram Moolenaar  HiLink luaIn			Operator
346071d4279SBram Moolenaar  HiLink luaConstant		Constant
347071d4279SBram Moolenaar  HiLink luaCond		Conditional
348*9b451250SBram Moolenaar  HiLink luaElse		Conditional
349071d4279SBram Moolenaar  HiLink luaFunction		Function
350071d4279SBram Moolenaar  HiLink luaComment		Comment
351071d4279SBram Moolenaar  HiLink luaTodo		Todo
352071d4279SBram Moolenaar  HiLink luaTable		Structure
353071d4279SBram Moolenaar  HiLink luaError		Error
354b6b046b2SBram Moolenaar  HiLink luaParenError		Error
355*9b451250SBram Moolenaar  HiLink luaBraceError		Error
356071d4279SBram Moolenaar  HiLink luaSpecial		SpecialChar
357071d4279SBram Moolenaar  HiLink luaFunc		Identifier
358b6b046b2SBram Moolenaar  HiLink luaLabel		Label
359071d4279SBram Moolenaar
360071d4279SBram Moolenaar  delcommand HiLink
361071d4279SBram Moolenaarendif
362071d4279SBram Moolenaar
363071d4279SBram Moolenaarlet b:current_syntax = "lua"
364071d4279SBram Moolenaar
3655dc6252dSBram Moolenaarlet &cpo = s:cpo_save
3665dc6252dSBram Moolenaarunlet s:cpo_save
367b6b046b2SBram Moolenaar" vim: et ts=8 sw=2
368