xref: /vim-8.2.3635/runtime/syntax/lua.vim (revision 071d4279)
1*071d4279SBram Moolenaar" Vim syntax file
2*071d4279SBram Moolenaar" Language:	Lua 4.0 and Lua 5.0
3*071d4279SBram Moolenaar" Maintainer:	Marcus Aurelius Farias <[email protected]>
4*071d4279SBram Moolenaar" First Author:	Carlos Augusto Teixeira Mendes <[email protected]>
5*071d4279SBram Moolenaar" Last Change:	2003 May 04
6*071d4279SBram Moolenaar" Options:	lua_version = 4 or 5 [default]
7*071d4279SBram Moolenaar"
8*071d4279SBram Moolenaar" Still has some syncing problems (long [[strings]])...
9*071d4279SBram Moolenaar
10*071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
11*071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded
12*071d4279SBram Moolenaarif version < 600
13*071d4279SBram Moolenaar  syntax clear
14*071d4279SBram Moolenaarelseif exists("b:current_syntax")
15*071d4279SBram Moolenaar  finish
16*071d4279SBram Moolenaarendif
17*071d4279SBram Moolenaar
18*071d4279SBram Moolenaarif !exists("lua_version")
19*071d4279SBram Moolenaar  let lua_version = 5
20*071d4279SBram Moolenaarendif
21*071d4279SBram Moolenaar
22*071d4279SBram Moolenaarsyn case match
23*071d4279SBram Moolenaar
24*071d4279SBram Moolenaar" Comments
25*071d4279SBram Moolenaarsyn keyword luaTodo		contained TODO FIXME XXX
26*071d4279SBram Moolenaarsyn match   luaComment		"--.*$" contains=luaTodo
27*071d4279SBram Moolenaarif lua_version > 4
28*071d4279SBram Moolenaar  syn region  luaComment	matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
29*071d4279SBram Moolenaar  syn region  luaInnerComment	contained transparent start="\[\[" end="\]\]"
30*071d4279SBram Moolenaarendif
31*071d4279SBram Moolenaar" First line may start with #!
32*071d4279SBram Moolenaarsyn match   luaComment		"\%^#!.*"
33*071d4279SBram Moolenaar
34*071d4279SBram Moolenaar" catch errors caused by wrong parenthesis and wrong curly brackets or
35*071d4279SBram Moolenaar" keywords placed outside their respective blocks
36*071d4279SBram Moolenaar
37*071d4279SBram Moolenaarsyn region  luaParen		transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
38*071d4279SBram Moolenaarsyn match   luaError		")"
39*071d4279SBram Moolenaarsyn match   luaError		"}"
40*071d4279SBram Moolenaarsyn match   luaError		"\<\(end\|else\|elseif\|then\|until\|in\)\>"
41*071d4279SBram Moolenaar
42*071d4279SBram Moolenaar
43*071d4279SBram Moolenaar" Function declaration
44*071d4279SBram Moolenaarsyn region  luaFunctionBlock    transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
45*071d4279SBram Moolenaar
46*071d4279SBram Moolenaar" if then else elseif end
47*071d4279SBram Moolenaarsyn keyword luaCond		contained else
48*071d4279SBram Moolenaar
49*071d4279SBram Moolenaar" then ... end
50*071d4279SBram Moolenaarsyn region  luaCondEnd		contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
51*071d4279SBram Moolenaar
52*071d4279SBram Moolenaar" elseif ... then
53*071d4279SBram Moolenaarsyn region  luaCondElseif	contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
54*071d4279SBram Moolenaar
55*071d4279SBram Moolenaar" if ... then
56*071d4279SBram Moolenaarsyn region  luaCondStart	transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty
57*071d4279SBram Moolenaar
58*071d4279SBram Moolenaar" do ... end
59*071d4279SBram Moolenaarsyn region  luaBlock		transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
60*071d4279SBram Moolenaar
61*071d4279SBram Moolenaar" repeat ... until
62*071d4279SBram Moolenaarsyn region  luaRepeatBlock	transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
63*071d4279SBram Moolenaar
64*071d4279SBram Moolenaar" while ... do
65*071d4279SBram Moolenaarsyn region  luaRepeatBlock	transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty
66*071d4279SBram Moolenaar
67*071d4279SBram Moolenaar" for ... do and for ... in ... do
68*071d4279SBram Moolenaarsyn region luaRepeatBlock	transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
69*071d4279SBram Moolenaar
70*071d4279SBram Moolenaar" Following 'else' example. This is another item to those
71*071d4279SBram Moolenaar" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
72*071d4279SBram Moolenaarsyn keyword luaRepeat		contained in
73*071d4279SBram Moolenaar
74*071d4279SBram Moolenaar" other keywords
75*071d4279SBram Moolenaarsyn keyword luaStatement	return local break
76*071d4279SBram Moolenaarsyn keyword luaOperator		and or not
77*071d4279SBram Moolenaarsyn keyword luaConstant		nil
78*071d4279SBram Moolenaarif lua_version > 4
79*071d4279SBram Moolenaar  syn keyword luaConstant	true false
80*071d4279SBram Moolenaarendif
81*071d4279SBram Moolenaar
82*071d4279SBram Moolenaar" Pre processor doesn't exist since Lua 4.0
83*071d4279SBram Moolenaar" syn match   luaPreProc	  "^\s*$\(debug\|nodebug\|if\|ifnot\|end\|else\|endinput\)\>"
84*071d4279SBram Moolenaar
85*071d4279SBram Moolenaar" Strings
86*071d4279SBram Moolenaarsyn match   luaSpecial		contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
87*071d4279SBram Moolenaarsyn region  luaString		start=+'+  end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
88*071d4279SBram Moolenaarsyn region  luaString		start=+"+  end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
89*071d4279SBram Moolenaar" Nested strings
90*071d4279SBram Moolenaarsyn region  luaString2		matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
91*071d4279SBram Moolenaar
92*071d4279SBram Moolenaar" integer number
93*071d4279SBram Moolenaarsyn match luaNumber		"\<[0-9]\+\>"
94*071d4279SBram Moolenaar" floating point number, with dot, optional exponent
95*071d4279SBram Moolenaarsyn match luaFloat		"\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>"
96*071d4279SBram Moolenaar" floating point number, starting with a dot, optional exponent
97*071d4279SBram Moolenaarsyn match luaFloat		"\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>"
98*071d4279SBram Moolenaar" floating point number, without dot, with exponent
99*071d4279SBram Moolenaarsyn match luaFloat		"\<[0-9]\+e[-+]\=[0-9]\+\>"
100*071d4279SBram Moolenaar
101*071d4279SBram Moolenaar" tables
102*071d4279SBram Moolenaarsyn region  luaTableBlock       transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
103*071d4279SBram Moolenaar
104*071d4279SBram Moolenaarsyn keyword luaFunc	assert collectgarbage dofile error gcinfo next
105*071d4279SBram Moolenaarsyn keyword luaFunc	print rawget rawset tonumber tostring type _VERSION
106*071d4279SBram Moolenaar
107*071d4279SBram Moolenaarif lua_version == 4
108*071d4279SBram Moolenaar  syn keyword luaFunc	_ALERT _ERRORMESSAGE
109*071d4279SBram Moolenaar  syn keyword luaFunc	call copytagmethods dostring
110*071d4279SBram Moolenaar  syn keyword luaFunc	foreach foreachi getglobal getn
111*071d4279SBram Moolenaar  syn keyword luaFunc	gettagmethod globals newtag
112*071d4279SBram Moolenaar  syn keyword luaFunc	setglobal settag settagmethod sort
113*071d4279SBram Moolenaar  syn keyword luaFunc	tag tinsert tremove
114*071d4279SBram Moolenaar  syn keyword luaFunc	_INPUT _OUTPUT _STDIN _STDOUT _STDERR
115*071d4279SBram Moolenaar  syn keyword luaFunc	openfile closefile flush seek
116*071d4279SBram Moolenaar  syn keyword luaFunc	setlocale execute remove rename tmpname
117*071d4279SBram Moolenaar  syn keyword luaFunc	getenv date clock exit
118*071d4279SBram Moolenaar  syn keyword luaFunc	readfrom writeto appendto read write
119*071d4279SBram Moolenaar  syn keyword luaFunc	PI abs sin cos tan asin
120*071d4279SBram Moolenaar  syn keyword luaFunc	acos atan atan2 ceil floor
121*071d4279SBram Moolenaar  syn keyword luaFunc	mod frexp ldexp sqrt min max log
122*071d4279SBram Moolenaar  syn keyword luaFunc	log10 exp deg rad random
123*071d4279SBram Moolenaar  syn keyword luaFunc	randomseed strlen strsub strlower strupper
124*071d4279SBram Moolenaar  syn keyword luaFunc	strchar strrep ascii strbyte
125*071d4279SBram Moolenaar  syn keyword luaFunc	format strfind gsub
126*071d4279SBram Moolenaar  syn keyword luaFunc	getinfo getlocal setlocal setcallhook setlinehook
127*071d4279SBram Moolenaarelse
128*071d4279SBram Moolenaar  syn keyword luaFunc	_G getfenv getmetatable ipairs loadfile
129*071d4279SBram Moolenaar  syn keyword luaFunc	loadlib loadstring pairs pcall rawequal
130*071d4279SBram Moolenaar  syn keyword luaFunc	require setfenv setmetatable unpack xpcall
131*071d4279SBram Moolenaar  syn keyword luaFunc	LUA_PATH _LOADED _REQUIREDNAME
132*071d4279SBram Moolenaar" Not sure if all these functions need to be highlighted...
133*071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.create/
134*071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.resume/
135*071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.status/
136*071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.wrap/
137*071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.yield/
138*071d4279SBram Moolenaar  syn match   luaFunc	/string\.byte/
139*071d4279SBram Moolenaar  syn match   luaFunc	/string\.char/
140*071d4279SBram Moolenaar  syn match   luaFunc	/string\.dump/
141*071d4279SBram Moolenaar  syn match   luaFunc	/string\.find/
142*071d4279SBram Moolenaar  syn match   luaFunc	/string\.len/
143*071d4279SBram Moolenaar  syn match   luaFunc	/string\.lower/
144*071d4279SBram Moolenaar  syn match   luaFunc	/string\.rep/
145*071d4279SBram Moolenaar  syn match   luaFunc	/string\.sub/
146*071d4279SBram Moolenaar  syn match   luaFunc	/string\.upper/
147*071d4279SBram Moolenaar  syn match   luaFunc	/string\.format/
148*071d4279SBram Moolenaar  syn match   luaFunc	/string\.gfind/
149*071d4279SBram Moolenaar  syn match   luaFunc	/string\.gsub/
150*071d4279SBram Moolenaar  syn match   luaFunc	/table\.concat/
151*071d4279SBram Moolenaar  syn match   luaFunc	/table\.foreach/
152*071d4279SBram Moolenaar  syn match   luaFunc	/table\.foreachi/
153*071d4279SBram Moolenaar  syn match   luaFunc	/table\.getn/
154*071d4279SBram Moolenaar  syn match   luaFunc	/table\.sort/
155*071d4279SBram Moolenaar  syn match   luaFunc	/table\.insert/
156*071d4279SBram Moolenaar  syn match   luaFunc	/table\.remove/
157*071d4279SBram Moolenaar  syn match   luaFunc	/table\.setn/
158*071d4279SBram Moolenaar  syn match   luaFunc	/math\.abs/
159*071d4279SBram Moolenaar  syn match   luaFunc	/math\.acos/
160*071d4279SBram Moolenaar  syn match   luaFunc	/math\.asin/
161*071d4279SBram Moolenaar  syn match   luaFunc	/math\.atan/
162*071d4279SBram Moolenaar  syn match   luaFunc	/math\.atan2/
163*071d4279SBram Moolenaar  syn match   luaFunc	/math\.ceil/
164*071d4279SBram Moolenaar  syn match   luaFunc	/math\.cos/
165*071d4279SBram Moolenaar  syn match   luaFunc	/math\.deg/
166*071d4279SBram Moolenaar  syn match   luaFunc	/math\.exp/
167*071d4279SBram Moolenaar  syn match   luaFunc	/math\.floor/
168*071d4279SBram Moolenaar  syn match   luaFunc	/math\.log/
169*071d4279SBram Moolenaar  syn match   luaFunc	/math\.log10/
170*071d4279SBram Moolenaar  syn match   luaFunc	/math\.max/
171*071d4279SBram Moolenaar  syn match   luaFunc	/math\.min/
172*071d4279SBram Moolenaar  syn match   luaFunc	/math\.mod/
173*071d4279SBram Moolenaar  syn match   luaFunc	/math\.pow/
174*071d4279SBram Moolenaar  syn match   luaFunc	/math\.rad/
175*071d4279SBram Moolenaar  syn match   luaFunc	/math\.sin/
176*071d4279SBram Moolenaar  syn match   luaFunc	/math\.sqrt/
177*071d4279SBram Moolenaar  syn match   luaFunc	/math\.tan/
178*071d4279SBram Moolenaar  syn match   luaFunc	/math\.frexp/
179*071d4279SBram Moolenaar  syn match   luaFunc	/math\.ldexp/
180*071d4279SBram Moolenaar  syn match   luaFunc	/math\.random/
181*071d4279SBram Moolenaar  syn match   luaFunc	/math\.randomseed/
182*071d4279SBram Moolenaar  syn match   luaFunc	/math\.pi/
183*071d4279SBram Moolenaar  syn match   luaFunc	/io\.stdin/
184*071d4279SBram Moolenaar  syn match   luaFunc	/io\.stdout/
185*071d4279SBram Moolenaar  syn match   luaFunc	/io\.stderr/
186*071d4279SBram Moolenaar  syn match   luaFunc	/io\.close/
187*071d4279SBram Moolenaar  syn match   luaFunc	/io\.flush/
188*071d4279SBram Moolenaar  syn match   luaFunc	/io\.input/
189*071d4279SBram Moolenaar  syn match   luaFunc	/io\.lines/
190*071d4279SBram Moolenaar  syn match   luaFunc	/io\.open/
191*071d4279SBram Moolenaar  syn match   luaFunc	/io\.output/
192*071d4279SBram Moolenaar  syn match   luaFunc	/io\.popen/
193*071d4279SBram Moolenaar  syn match   luaFunc	/io\.read/
194*071d4279SBram Moolenaar  syn match   luaFunc	/io\.tmpfile/
195*071d4279SBram Moolenaar  syn match   luaFunc	/io\.type/
196*071d4279SBram Moolenaar  syn match   luaFunc	/io\.write/
197*071d4279SBram Moolenaar  syn match   luaFunc	/os\.clock/
198*071d4279SBram Moolenaar  syn match   luaFunc	/os\.date/
199*071d4279SBram Moolenaar  syn match   luaFunc	/os\.difftime/
200*071d4279SBram Moolenaar  syn match   luaFunc	/os\.execute/
201*071d4279SBram Moolenaar  syn match   luaFunc	/os\.exit/
202*071d4279SBram Moolenaar  syn match   luaFunc	/os\.getenv/
203*071d4279SBram Moolenaar  syn match   luaFunc	/os\.remove/
204*071d4279SBram Moolenaar  syn match   luaFunc	/os\.rename/
205*071d4279SBram Moolenaar  syn match   luaFunc	/os\.setlocale/
206*071d4279SBram Moolenaar  syn match   luaFunc	/os\.time/
207*071d4279SBram Moolenaar  syn match   luaFunc	/os\.tmpname/
208*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.debug/
209*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.gethook/
210*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getinfo/
211*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getlocal/
212*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getupvalue/
213*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.setlocal/
214*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.setupvalue/
215*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.sethook/
216*071d4279SBram Moolenaar  syn match   luaFunc	/debug\.traceback/
217*071d4279SBram Moolenaarendif
218*071d4279SBram Moolenaar
219*071d4279SBram Moolenaar"syncing method
220*071d4279SBram Moolenaarsyn sync minlines=100
221*071d4279SBram Moolenaar
222*071d4279SBram Moolenaar" Define the default highlighting.
223*071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
224*071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
225*071d4279SBram Moolenaarif version >= 508 || !exists("did_lua_syntax_inits")
226*071d4279SBram Moolenaar  if version < 508
227*071d4279SBram Moolenaar    let did_lua_syntax_inits = 1
228*071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
229*071d4279SBram Moolenaar  else
230*071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
231*071d4279SBram Moolenaar  endif
232*071d4279SBram Moolenaar
233*071d4279SBram Moolenaar  HiLink luaStatement		Statement
234*071d4279SBram Moolenaar  HiLink luaRepeat		Repeat
235*071d4279SBram Moolenaar  HiLink luaString		String
236*071d4279SBram Moolenaar  HiLink luaString2		String
237*071d4279SBram Moolenaar  HiLink luaNumber		Number
238*071d4279SBram Moolenaar  HiLink luaFloat		Float
239*071d4279SBram Moolenaar  HiLink luaOperator		Operator
240*071d4279SBram Moolenaar  HiLink luaConstant		Constant
241*071d4279SBram Moolenaar  HiLink luaCond		Conditional
242*071d4279SBram Moolenaar  HiLink luaFunction		Function
243*071d4279SBram Moolenaar  HiLink luaComment		Comment
244*071d4279SBram Moolenaar  HiLink luaTodo		Todo
245*071d4279SBram Moolenaar  HiLink luaTable		Structure
246*071d4279SBram Moolenaar  HiLink luaError		Error
247*071d4279SBram Moolenaar  HiLink luaSpecial		SpecialChar
248*071d4279SBram Moolenaar  " HiLink luaPreProc		PreProc
249*071d4279SBram Moolenaar  HiLink luaFunc		Identifier
250*071d4279SBram Moolenaar
251*071d4279SBram Moolenaar  delcommand HiLink
252*071d4279SBram Moolenaarendif
253*071d4279SBram Moolenaar
254*071d4279SBram Moolenaarlet b:current_syntax = "lua"
255*071d4279SBram Moolenaar
256*071d4279SBram Moolenaar" vim: noet ts=8
257