summaryrefslogtreecommitdiffstats
path: root/misc/syntax/lua.syntax
blob: 0d1b816328d156f4b294a23e4335ffc4d0a55a6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
#
# Lua syntax highlighting
#
# History:
#
# - 2015: Support for long strings and long comments.
# - 2011: String-literal fixes.
# - 2005: Started by Mike Gorchak <lestat@i.com.ua>

context default lightgray

# keywords
    keyword whole and white
    keyword whole break white
    keyword whole do white
    keyword whole else white
    keyword whole elseif white
    keyword whole end white
    keyword whole false white
    keyword whole for white
    keyword whole function white
    keyword whole if white
    keyword whole in white
    keyword whole local white
    keyword whole nil white
    keyword whole not white
    keyword whole or white
    keyword whole repeat white
    keyword whole return white
    keyword whole then white
    keyword whole true white
    keyword whole until white
    keyword whole while white

# Comment and string delimiters
    keyword -- brown
    keyword ]\[=\]] brown
    # The following colorizes the start delimiter of "long" strings.
    # The start delimiter of "long" comments isn't affected by the following
    # directive but gets its color from the "--" above (gods know why).
    keyword [\[=\][ brown

# Operators
    keyword ( white
    keyword ) white
    keyword { white
    keyword } white
    keyword [ white
    keyword ] white
    keyword . white
    keyword , white
    keyword ; white
    keyword : white
    keyword .. white
    keyword ... white
    keyword = white
    keyword == white
    keyword ~= white
    keyword <= white
    keyword => white
    keyword > white
    keyword < white
    keyword \+ white
    keyword - white
    keyword \* white
    keyword / white
    keyword ^ white


# Library Functions

    # basiclib
    keyword whole error yellow
    keyword whole getmetatable yellow
    keyword whole setmetatable yellow
    keyword whole getfenv yellow
    keyword whole setfenv yellow
    keyword whole next yellow
    keyword whole ipairs yellow
    keyword whole pairs yellow
    keyword whole print yellow
    keyword whole tonumber yellow
    keyword whole tostring yellow
    keyword whole type yellow
    keyword whole assert yellow
    #keyword whole unpack yellow    # modern code should use table.unpack()
    keyword whole rawequal yellow
    keyword whole rawget yellow
    keyword whole rawset yellow
    keyword whole pcall yellow
    keyword whole xpcall yellow
    keyword whole collectgarbage yellow
    keyword whole gcinfo yellow
    keyword whole loadfile yellow
    keyword whole dofile yellow
    keyword whole loadstring yellow
    keyword whole require yellow
    keyword whole coroutine.create yellow
    keyword whole coroutine.wrap yellow
    keyword whole coroutine.resume yellow
    keyword whole coroutine.yield yellow
    keyword whole coroutine.status yellow

    # stringlib
    keyword whole string.len yellow
    keyword whole string.sub yellow
    keyword whole string.lower yellow
    keyword whole string.upper yellow
    keyword whole string.char yellow
    keyword whole string.rep yellow
    keyword whole string.byte yellow
    keyword whole string.format yellow
    keyword whole string.dump yellow
    keyword whole string.find yellow
    keyword whole string.gfind yellow
    keyword whole string.gsub yellow

    # tablelib
    keyword whole table.concat yellow
    keyword whole table.foreach yellow
    keyword whole table.foreachi yellow
    keyword whole table.getn yellow
    keyword whole table.setn yellow
    keyword whole table.sort yellow
    keyword whole table.insert yellow
    keyword whole table.remove yellow
    keyword whole table.unpack yellow

    # mathlib
    keyword whole math.abs yellow
    keyword whole math.sin yellow
    keyword whole math.cos yellow
    keyword whole math.tan yellow
    keyword whole math.asin yellow
    keyword whole math.acos yellow
    keyword whole math.atan yellow
    keyword whole math.atan2 yellow
    keyword whole math.ceil yellow
    keyword whole math.floor yellow
    keyword whole math.mod yellow
    keyword whole math.frexp yellow
    keyword whole math.ldexp yellow
    keyword whole math.sqrt yellow
    keyword whole math.min yellow
    keyword whole math.max yellow
    keyword whole math.log yellow
    keyword whole math.log10 yellow
    keyword whole math.exp yellow
    keyword whole math.deg yellow
    keyword whole math.pow yellow
    keyword whole math.rad yellow
    keyword whole math.random yellow
    keyword whole math.randomseed yellow

    # iolib
    keyword whole io.input yellow
    keyword whole io.output yellow
    keyword whole io.lines yellow
    keyword whole io.close yellow
    keyword whole io.flush yellow
    keyword whole io.open yellow
    keyword whole io.popen yellow
    keyword whole io.read yellow
    keyword whole io.tmpfile yellow
    keyword whole io.type yellow
    keyword whole io.write yellow

    # filelib
    keyword whole file.flush yellow
    keyword whole file.read yellow
    keyword whole file.lines yellow
    keyword whole file.seek yellow
    keyword whole file.write yellow
    keyword whole file.close yellow
    keyword whole file.__gc yellow
    keyword whole file.__tostring yellow

    # syslib
    keyword whole os.clock yellow
    keyword whole os.date yellow
    keyword whole os.difftime yellow
    keyword whole os.execute yellow
    keyword whole os.exit yellow
    keyword whole os.getenv yellow
    keyword whole os.remove yellow
    keyword whole os.rename yellow
    keyword whole os.setlocale yellow
    keyword whole os.time yellow
    keyword whole os.tmpname yellow

    # debuglib
    keyword whole debug.getlocal yellow
    keyword whole debug.getinfo yellow
    keyword whole debug.gethook yellow
    keyword whole debug.getupvalue yellow
    keyword whole debug.sethook yellow
    keyword whole debug.setlocal yellow
    keyword whole debug.setupvalue yellow
    keyword whole debug.debug yellow
    keyword whole debug.traceback yellow


# Global Variables
    keyword whole _VERSION brightmagenta
    keyword whole _G brightmagenta

#
# Long comments
#

context exclusive --[[ ]] brown
    # hightlights ldoc tags: "@todo", "@param", "@function" etc.
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck
context exclusive --[=[ ]=] brown
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck
context exclusive --[==[ ]==] brown
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck
context exclusive --[===[ ]===] brown
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck
# 4 equals and up (the number of ='s doesn't have to match, but that's the best we can do):
context exclusive --[====\[=\][ ]====\[=\]] brown
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck

#
# Long strings
#

context exclusive [[ ]] brightmagenta
    spellcheck
context exclusive [=[ ]=] brightmagenta
    spellcheck
context exclusive [==[ ]==] brightmagenta
    spellcheck
context exclusive [===[ ]===] brightmagenta
    spellcheck
# 4 equals and up (the number of ='s doesn't have to match, but that's the best we can do):
context exclusive [====\[=\][ ]====\[=\]] brightmagenta
    spellcheck


# Simple comments
context exclusive -- \n brown
    keyword @\[abcdefghijklmnopqrstuvwxyz\] brightred base
    spellcheck

# Shebang line
context linestart #! \n brown

# Strings
context " " green
    keyword %a brightgreen
    keyword %c brightgreen
    keyword %d brightgreen
    keyword %l brightgreen
    keyword %p brightgreen
    keyword %q brightgreen
    keyword %s brightgreen
    keyword %u brightgreen
    keyword %w brightgreen
    keyword %x brightgreen
    keyword %z brightgreen
    keyword \\\\ brightgreen
    keyword \\" brightgreen
    keyword \\' brightgreen
    keyword \\\{abtnvfr\} brightgreen
    keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
    keyword \\\{01234567\}\{01234567\} brightgreen
    keyword \\\{01234567\} brightgreen
    spellcheck

context ' ' green
    keyword %a brightgreen
    keyword %c brightgreen
    keyword %d brightgreen
    keyword %l brightgreen
    keyword %p brightgreen
    keyword %q brightgreen
    keyword %s brightgreen
    keyword %u brightgreen
    keyword %w brightgreen
    keyword %x brightgreen
    keyword %z brightgreen
    keyword \\\\ brightgreen
    keyword \\" brightgreen
    keyword \\' brightgreen
    keyword \\\{abtnvfr\} brightgreen
    keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
    keyword \\\{01234567\}\{01234567\} brightgreen
    keyword \\\{01234567\} brightgreen
    spellcheck