xref: /vim-8.2.3635/runtime/syntax/lua.vim (revision d4755bb0)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Lua 4.0 and Lua 5.0
3*d4755bb0SBram Moolenaar" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
4*d4755bb0SBram Moolenaar" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
5*d4755bb0SBram Moolenaar" Last Change:	2004 Aug 29
6071d4279SBram Moolenaar" Options:	lua_version = 4 or 5 [default]
7071d4279SBram Moolenaar"
8071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
9071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded
10071d4279SBram Moolenaarif version < 600
11071d4279SBram Moolenaar  syntax clear
12071d4279SBram Moolenaarelseif exists("b:current_syntax")
13071d4279SBram Moolenaar  finish
14071d4279SBram Moolenaarendif
15071d4279SBram Moolenaar
16071d4279SBram Moolenaarif !exists("lua_version")
17071d4279SBram Moolenaar  let lua_version = 5
18071d4279SBram Moolenaarendif
19071d4279SBram Moolenaar
20071d4279SBram Moolenaarsyn case match
21071d4279SBram Moolenaar
22071d4279SBram Moolenaar" Comments
23071d4279SBram Moolenaarsyn keyword luaTodo		contained TODO FIXME XXX
24071d4279SBram Moolenaarsyn match   luaComment		"--.*$" contains=luaTodo
25071d4279SBram Moolenaarif lua_version > 4
26071d4279SBram Moolenaar  syn region  luaComment	matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
27071d4279SBram Moolenaar  syn region  luaInnerComment	contained transparent start="\[\[" end="\]\]"
28071d4279SBram Moolenaarendif
29071d4279SBram Moolenaar" First line may start with #!
30071d4279SBram Moolenaarsyn match   luaComment		"\%^#!.*"
31071d4279SBram Moolenaar
32071d4279SBram Moolenaar" catch errors caused by wrong parenthesis and wrong curly brackets or
33071d4279SBram Moolenaar" keywords placed outside their respective blocks
34071d4279SBram Moolenaar
35071d4279SBram Moolenaarsyn region  luaParen		transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
36071d4279SBram Moolenaarsyn match   luaError		")"
37071d4279SBram Moolenaarsyn match   luaError		"}"
38*d4755bb0SBram Moolenaarsyn match   luaError		"\<\%(end\|else\|elseif\|then\|until\|in\)\>"
39071d4279SBram Moolenaar
40071d4279SBram Moolenaar
41071d4279SBram Moolenaar" Function declaration
42071d4279SBram Moolenaarsyn region  luaFunctionBlock    transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
43071d4279SBram Moolenaar
44071d4279SBram Moolenaar" if then else elseif end
45071d4279SBram Moolenaarsyn keyword luaCond		contained else
46071d4279SBram Moolenaar
47071d4279SBram Moolenaar" then ... end
48071d4279SBram Moolenaarsyn region  luaCondEnd		contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
49071d4279SBram Moolenaar
50071d4279SBram Moolenaar" elseif ... then
51071d4279SBram Moolenaarsyn region  luaCondElseif	contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
52071d4279SBram Moolenaar
53071d4279SBram Moolenaar" if ... then
54071d4279SBram 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
55071d4279SBram Moolenaar
56071d4279SBram Moolenaar" do ... end
57071d4279SBram Moolenaarsyn region  luaBlock		transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
58071d4279SBram Moolenaar
59071d4279SBram Moolenaar" repeat ... until
60071d4279SBram Moolenaarsyn region  luaRepeatBlock	transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
61071d4279SBram Moolenaar
62071d4279SBram Moolenaar" while ... do
63071d4279SBram 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
64071d4279SBram Moolenaar
65071d4279SBram Moolenaar" for ... do and for ... in ... do
66071d4279SBram Moolenaarsyn region luaRepeatBlock	transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar" Following 'else' example. This is another item to those
69071d4279SBram Moolenaar" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
70071d4279SBram Moolenaarsyn keyword luaRepeat		contained in
71071d4279SBram Moolenaar
72071d4279SBram Moolenaar" other keywords
73071d4279SBram Moolenaarsyn keyword luaStatement	return local break
74071d4279SBram Moolenaarsyn keyword luaOperator		and or not
75071d4279SBram Moolenaarsyn keyword luaConstant		nil
76071d4279SBram Moolenaarif lua_version > 4
77071d4279SBram Moolenaar  syn keyword luaConstant	true false
78071d4279SBram Moolenaarendif
79071d4279SBram Moolenaar
80071d4279SBram Moolenaar" Pre processor doesn't exist since Lua 4.0
81*d4755bb0SBram Moolenaar" syn match   luaPreProc	  "^\s*$\%(debug\|nodebug\|if\|ifnot\|end\|else\|endinput\)\>"
82071d4279SBram Moolenaar
83071d4279SBram Moolenaar" Strings
84071d4279SBram Moolenaarsyn match   luaSpecial		contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
85071d4279SBram Moolenaarsyn region  luaString		start=+'+  end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
86071d4279SBram Moolenaarsyn region  luaString		start=+"+  end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
87071d4279SBram Moolenaar" Nested strings
88071d4279SBram Moolenaarsyn region  luaString2		matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
89071d4279SBram Moolenaar
90071d4279SBram Moolenaar" integer number
91071d4279SBram Moolenaarsyn match luaNumber		"\<[0-9]\+\>"
92071d4279SBram Moolenaar" floating point number, with dot, optional exponent
93*d4755bb0SBram Moolenaarsyn match luaFloat		"\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
94071d4279SBram Moolenaar" floating point number, starting with a dot, optional exponent
95*d4755bb0SBram Moolenaarsyn match luaFloat		"\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
96071d4279SBram Moolenaar" floating point number, without dot, with exponent
97071d4279SBram Moolenaarsyn match luaFloat		"\<[0-9]\+e[-+]\=[0-9]\+\>"
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar" tables
100071d4279SBram Moolenaarsyn region  luaTableBlock       transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
101071d4279SBram Moolenaar
102071d4279SBram Moolenaarsyn keyword luaFunc	assert collectgarbage dofile error gcinfo next
103071d4279SBram Moolenaarsyn keyword luaFunc	print rawget rawset tonumber tostring type _VERSION
104071d4279SBram Moolenaar
105071d4279SBram Moolenaarif lua_version == 4
106071d4279SBram Moolenaar  syn keyword luaFunc	_ALERT _ERRORMESSAGE
107071d4279SBram Moolenaar  syn keyword luaFunc	call copytagmethods dostring
108071d4279SBram Moolenaar  syn keyword luaFunc	foreach foreachi getglobal getn
109071d4279SBram Moolenaar  syn keyword luaFunc	gettagmethod globals newtag
110071d4279SBram Moolenaar  syn keyword luaFunc	setglobal settag settagmethod sort
111071d4279SBram Moolenaar  syn keyword luaFunc	tag tinsert tremove
112071d4279SBram Moolenaar  syn keyword luaFunc	_INPUT _OUTPUT _STDIN _STDOUT _STDERR
113071d4279SBram Moolenaar  syn keyword luaFunc	openfile closefile flush seek
114071d4279SBram Moolenaar  syn keyword luaFunc	setlocale execute remove rename tmpname
115071d4279SBram Moolenaar  syn keyword luaFunc	getenv date clock exit
116071d4279SBram Moolenaar  syn keyword luaFunc	readfrom writeto appendto read write
117071d4279SBram Moolenaar  syn keyword luaFunc	PI abs sin cos tan asin
118071d4279SBram Moolenaar  syn keyword luaFunc	acos atan atan2 ceil floor
119071d4279SBram Moolenaar  syn keyword luaFunc	mod frexp ldexp sqrt min max log
120071d4279SBram Moolenaar  syn keyword luaFunc	log10 exp deg rad random
121071d4279SBram Moolenaar  syn keyword luaFunc	randomseed strlen strsub strlower strupper
122071d4279SBram Moolenaar  syn keyword luaFunc	strchar strrep ascii strbyte
123071d4279SBram Moolenaar  syn keyword luaFunc	format strfind gsub
124071d4279SBram Moolenaar  syn keyword luaFunc	getinfo getlocal setlocal setcallhook setlinehook
125071d4279SBram Moolenaarelse
126071d4279SBram Moolenaar  syn keyword luaFunc	_G getfenv getmetatable ipairs loadfile
127071d4279SBram Moolenaar  syn keyword luaFunc	loadlib loadstring pairs pcall rawequal
128071d4279SBram Moolenaar  syn keyword luaFunc	require setfenv setmetatable unpack xpcall
129071d4279SBram Moolenaar  syn keyword luaFunc	LUA_PATH _LOADED _REQUIREDNAME
130071d4279SBram Moolenaar  " Not sure if all these functions need to be highlighted...
131071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.create/
132071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.resume/
133071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.status/
134071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.wrap/
135071d4279SBram Moolenaar  syn match   luaFunc	/coroutine\.yield/
136071d4279SBram Moolenaar  syn match   luaFunc	/string\.byte/
137071d4279SBram Moolenaar  syn match   luaFunc	/string\.char/
138071d4279SBram Moolenaar  syn match   luaFunc	/string\.dump/
139071d4279SBram Moolenaar  syn match   luaFunc	/string\.find/
140071d4279SBram Moolenaar  syn match   luaFunc	/string\.len/
141071d4279SBram Moolenaar  syn match   luaFunc	/string\.lower/
142071d4279SBram Moolenaar  syn match   luaFunc	/string\.rep/
143071d4279SBram Moolenaar  syn match   luaFunc	/string\.sub/
144071d4279SBram Moolenaar  syn match   luaFunc	/string\.upper/
145071d4279SBram Moolenaar  syn match   luaFunc	/string\.format/
146071d4279SBram Moolenaar  syn match   luaFunc	/string\.gfind/
147071d4279SBram Moolenaar  syn match   luaFunc	/string\.gsub/
148071d4279SBram Moolenaar  syn match   luaFunc	/table\.concat/
149071d4279SBram Moolenaar  syn match   luaFunc	/table\.foreach/
150071d4279SBram Moolenaar  syn match   luaFunc	/table\.foreachi/
151071d4279SBram Moolenaar  syn match   luaFunc	/table\.getn/
152071d4279SBram Moolenaar  syn match   luaFunc	/table\.sort/
153071d4279SBram Moolenaar  syn match   luaFunc	/table\.insert/
154071d4279SBram Moolenaar  syn match   luaFunc	/table\.remove/
155071d4279SBram Moolenaar  syn match   luaFunc	/table\.setn/
156071d4279SBram Moolenaar  syn match   luaFunc	/math\.abs/
157071d4279SBram Moolenaar  syn match   luaFunc	/math\.acos/
158071d4279SBram Moolenaar  syn match   luaFunc	/math\.asin/
159071d4279SBram Moolenaar  syn match   luaFunc	/math\.atan/
160071d4279SBram Moolenaar  syn match   luaFunc	/math\.atan2/
161071d4279SBram Moolenaar  syn match   luaFunc	/math\.ceil/
162071d4279SBram Moolenaar  syn match   luaFunc	/math\.cos/
163071d4279SBram Moolenaar  syn match   luaFunc	/math\.deg/
164071d4279SBram Moolenaar  syn match   luaFunc	/math\.exp/
165071d4279SBram Moolenaar  syn match   luaFunc	/math\.floor/
166071d4279SBram Moolenaar  syn match   luaFunc	/math\.log/
167071d4279SBram Moolenaar  syn match   luaFunc	/math\.log10/
168071d4279SBram Moolenaar  syn match   luaFunc	/math\.max/
169071d4279SBram Moolenaar  syn match   luaFunc	/math\.min/
170071d4279SBram Moolenaar  syn match   luaFunc	/math\.mod/
171071d4279SBram Moolenaar  syn match   luaFunc	/math\.pow/
172071d4279SBram Moolenaar  syn match   luaFunc	/math\.rad/
173071d4279SBram Moolenaar  syn match   luaFunc	/math\.sin/
174071d4279SBram Moolenaar  syn match   luaFunc	/math\.sqrt/
175071d4279SBram Moolenaar  syn match   luaFunc	/math\.tan/
176071d4279SBram Moolenaar  syn match   luaFunc	/math\.frexp/
177071d4279SBram Moolenaar  syn match   luaFunc	/math\.ldexp/
178071d4279SBram Moolenaar  syn match   luaFunc	/math\.random/
179071d4279SBram Moolenaar  syn match   luaFunc	/math\.randomseed/
180071d4279SBram Moolenaar  syn match   luaFunc	/math\.pi/
181071d4279SBram Moolenaar  syn match   luaFunc	/io\.stdin/
182071d4279SBram Moolenaar  syn match   luaFunc	/io\.stdout/
183071d4279SBram Moolenaar  syn match   luaFunc	/io\.stderr/
184071d4279SBram Moolenaar  syn match   luaFunc	/io\.close/
185071d4279SBram Moolenaar  syn match   luaFunc	/io\.flush/
186071d4279SBram Moolenaar  syn match   luaFunc	/io\.input/
187071d4279SBram Moolenaar  syn match   luaFunc	/io\.lines/
188071d4279SBram Moolenaar  syn match   luaFunc	/io\.open/
189071d4279SBram Moolenaar  syn match   luaFunc	/io\.output/
190071d4279SBram Moolenaar  syn match   luaFunc	/io\.popen/
191071d4279SBram Moolenaar  syn match   luaFunc	/io\.read/
192071d4279SBram Moolenaar  syn match   luaFunc	/io\.tmpfile/
193071d4279SBram Moolenaar  syn match   luaFunc	/io\.type/
194071d4279SBram Moolenaar  syn match   luaFunc	/io\.write/
195071d4279SBram Moolenaar  syn match   luaFunc	/os\.clock/
196071d4279SBram Moolenaar  syn match   luaFunc	/os\.date/
197071d4279SBram Moolenaar  syn match   luaFunc	/os\.difftime/
198071d4279SBram Moolenaar  syn match   luaFunc	/os\.execute/
199071d4279SBram Moolenaar  syn match   luaFunc	/os\.exit/
200071d4279SBram Moolenaar  syn match   luaFunc	/os\.getenv/
201071d4279SBram Moolenaar  syn match   luaFunc	/os\.remove/
202071d4279SBram Moolenaar  syn match   luaFunc	/os\.rename/
203071d4279SBram Moolenaar  syn match   luaFunc	/os\.setlocale/
204071d4279SBram Moolenaar  syn match   luaFunc	/os\.time/
205071d4279SBram Moolenaar  syn match   luaFunc	/os\.tmpname/
206071d4279SBram Moolenaar  syn match   luaFunc	/debug\.debug/
207071d4279SBram Moolenaar  syn match   luaFunc	/debug\.gethook/
208071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getinfo/
209071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getlocal/
210071d4279SBram Moolenaar  syn match   luaFunc	/debug\.getupvalue/
211071d4279SBram Moolenaar  syn match   luaFunc	/debug\.setlocal/
212071d4279SBram Moolenaar  syn match   luaFunc	/debug\.setupvalue/
213071d4279SBram Moolenaar  syn match   luaFunc	/debug\.sethook/
214071d4279SBram Moolenaar  syn match   luaFunc	/debug\.traceback/
215071d4279SBram Moolenaarendif
216071d4279SBram Moolenaar
217071d4279SBram Moolenaar"syncing method
218071d4279SBram Moolenaarsyn sync minlines=100
219071d4279SBram Moolenaar
220071d4279SBram Moolenaar" Define the default highlighting.
221071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
222071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
223071d4279SBram Moolenaarif version >= 508 || !exists("did_lua_syntax_inits")
224071d4279SBram Moolenaar  if version < 508
225071d4279SBram Moolenaar    let did_lua_syntax_inits = 1
226071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
227071d4279SBram Moolenaar  else
228071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
229071d4279SBram Moolenaar  endif
230071d4279SBram Moolenaar
231071d4279SBram Moolenaar  HiLink luaStatement		Statement
232071d4279SBram Moolenaar  HiLink luaRepeat		Repeat
233071d4279SBram Moolenaar  HiLink luaString		String
234071d4279SBram Moolenaar  HiLink luaString2		String
235071d4279SBram Moolenaar  HiLink luaNumber		Number
236071d4279SBram Moolenaar  HiLink luaFloat		Float
237071d4279SBram Moolenaar  HiLink luaOperator		Operator
238071d4279SBram Moolenaar  HiLink luaConstant		Constant
239071d4279SBram Moolenaar  HiLink luaCond		Conditional
240071d4279SBram Moolenaar  HiLink luaFunction		Function
241071d4279SBram Moolenaar  HiLink luaComment		Comment
242071d4279SBram Moolenaar  HiLink luaTodo		Todo
243071d4279SBram Moolenaar  HiLink luaTable		Structure
244071d4279SBram Moolenaar  HiLink luaError		Error
245071d4279SBram Moolenaar  HiLink luaSpecial		SpecialChar
246071d4279SBram Moolenaar  " HiLink luaPreProc		PreProc
247071d4279SBram Moolenaar  HiLink luaFunc		Identifier
248071d4279SBram Moolenaar
249071d4279SBram Moolenaar  delcommand HiLink
250071d4279SBram Moolenaarendif
251071d4279SBram Moolenaar
252071d4279SBram Moolenaarlet b:current_syntax = "lua"
253071d4279SBram Moolenaar
254071d4279SBram Moolenaar" vim: noet ts=8
255