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