]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/lua.xml
04f9f76d0293f3eff1548a661fe901c2458faa80
[factor.git] / basis / xmode / modes / lua.xml
1 <?xml version="1.0"?>\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
3 <!-- Lua 5.0 Mode, written by Philipp Janda -->\r
4 \r
5 <!-- TODO:\r
6   * Autoindent screws up, if { or ( gets typed after the indentNextLines trigger\r
7   -> This is very annoying, so I disabled the automatic indenting in this case!\r
8   -> It should be fixed if you set doubleBracketIndent to "true", but I keep it\r
9      disabled anyway since it is not that useful if you don't have an unindent!\r
10   * Should I use FUNCTION and OPERATOR tags inside of <KEYWORDS>??!!\r
11 -->\r
12 \r
13 <MODE>\r
14   <PROPS>\r
15     <!-- Comments -->\r
16     <PROPERTY NAME="lineComment" VALUE="--"/>\r
17     <PROPERTY NAME="commentStart" VALUE="--[["/>\r
18     <PROPERTY NAME="commentEnd" VALUE="]]"/>\r
19     <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*"/>\r
20     <!-- Auto indent -->\r
21     <PROPERTY NAME="indentOpenBrackets" VALUE="{"/>\r
22     <PROPERTY NAME="indentCloseBrackets" VALUE="}"/>\r
23     <!--\r
24     <PROPERTY NAME="indentNextLines" VALUE=".*((then|else|do|function)).*"/>\r
25     -->\r
26     <PROPERTY NAME="doubleBracketIndent" VALUE="true"/>\r
27   </PROPS>\r
28   <RULES IGNORE_CASE="FALSE" NO_WORD_SEP="_:." HIGHLIGHT_DIGITS="TRUE"\r
29          DIGIT_RE="[\p{Digit}]*(\.[\p{Digit}]*)?([eE][+-]?[\p{Digit}]*)?">\r
30     <!-- Multiline comments -->\r
31     <SPAN TYPE="COMMENT1">\r
32       <BEGIN>--[[</BEGIN>\r
33       <END>]]</END>\r
34     </SPAN>\r
35     <!-- Single line comments -->\r
36     <EOL_SPAN TYPE="COMMENT1">--</EOL_SPAN>\r
37     <EOL_SPAN AT_LINE_START="TRUE" TYPE="COMMENT2">#!</EOL_SPAN>\r
38     <!-- Simple string literals -->\r
39     <SPAN TYPE="LITERAL1">\r
40       <BEGIN>"</BEGIN>\r
41       <END>"</END>\r
42     </SPAN>\r
43     <SPAN TYPE="LITERAL1">\r
44       <BEGIN>'</BEGIN>\r
45       <END>'</END>\r
46     </SPAN>\r
47     <!-- Multiline string literals -->\r
48     <SPAN TYPE="LITERAL1">\r
49       <BEGIN>[[</BEGIN>\r
50       <END>]]</END>\r
51     </SPAN>\r
52     <!-- Operators -->\r
53     <SEQ TYPE="OPERATOR">+</SEQ>\r
54     <SEQ TYPE="OPERATOR">-</SEQ>\r
55     <SEQ TYPE="OPERATOR">*</SEQ>\r
56     <SEQ TYPE="OPERATOR">/</SEQ>\r
57     <SEQ TYPE="OPERATOR">^</SEQ>\r
58     <SEQ TYPE="OPERATOR">..</SEQ>\r
59     <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
60     <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
61     <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
62     <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
63     <SEQ TYPE="OPERATOR">==</SEQ>\r
64     <SEQ TYPE="OPERATOR">~=</SEQ>\r
65     <SEQ TYPE="OPERATOR">=</SEQ>\r
66     <!-- Function calls and definitions -->\r
67     <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>\r
68         <SEQ TYPE="OPERATOR">)</SEQ>\r
69     <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">{</MARK_PREVIOUS>\r
70         <SEQ TYPE="OPERATOR">}</SEQ>\r
71     <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">"</MARK_PREVIOUS>\r
72         <SEQ TYPE="OPERATOR">"</SEQ>\r
73     <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">'</MARK_PREVIOUS>\r
74         <SEQ TYPE="OPERATOR">'</SEQ>\r
75 \r
76     <KEYWORDS>\r
77       <!-- Keywords -->\r
78       <KEYWORD1>do</KEYWORD1>\r
79       <KEYWORD1>end</KEYWORD1>\r
80       <KEYWORD1>while</KEYWORD1>\r
81       <KEYWORD1>repeat</KEYWORD1>\r
82       <KEYWORD1>until</KEYWORD1>\r
83       <KEYWORD1>if</KEYWORD1>\r
84       <KEYWORD1>then</KEYWORD1>\r
85       <KEYWORD1>elseif</KEYWORD1>\r
86       <KEYWORD1>else</KEYWORD1>\r
87       <KEYWORD1>return</KEYWORD1>\r
88       <KEYWORD1>break</KEYWORD1>\r
89       <KEYWORD1>for</KEYWORD1>\r
90       <KEYWORD1>in</KEYWORD1>\r
91       <KEYWORD1>function</KEYWORD1>\r
92       <KEYWORD1>local</KEYWORD1>\r
93       <KEYWORD3>nil</KEYWORD3>\r
94       <KEYWORD3>true</KEYWORD3>\r
95       <KEYWORD3>false</KEYWORD3>\r
96       <KEYWORD1>and</KEYWORD1>\r
97       <KEYWORD1>or</KEYWORD1>\r
98       <KEYWORD1>not</KEYWORD1>\r
99       <!-- Builtin functions or special names -->\r
100       <KEYWORD2>assert</KEYWORD2>\r
101       <KEYWORD2>collectgarbage</KEYWORD2>\r
102       <KEYWORD2>dofile</KEYWORD2>\r
103       <KEYWORD2>error</KEYWORD2>\r
104       <KEYWORD2>_G</KEYWORD2>\r
105       <KEYWORD2>getfenv</KEYWORD2>\r
106       <KEYWORD2>getmetatable</KEYWORD2>\r
107       <KEYWORD2>gcinfo</KEYWORD2>\r
108       <KEYWORD2>ipairs</KEYWORD2>\r
109       <KEYWORD2>loadfile</KEYWORD2>\r
110       <KEYWORD2>loadlib</KEYWORD2>\r
111       <KEYWORD2>loadstring</KEYWORD2>\r
112       <KEYWORD2>next</KEYWORD2>\r
113       <KEYWORD2>pairs</KEYWORD2>\r
114       <KEYWORD2>pcall</KEYWORD2>\r
115       <KEYWORD2>print</KEYWORD2>\r
116       <KEYWORD2>rawequal</KEYWORD2>\r
117       <KEYWORD2>rawget</KEYWORD2>\r
118       <KEYWORD2>rawset</KEYWORD2>\r
119       <KEYWORD2>require</KEYWORD2>\r
120       <KEYWORD2>setfenv</KEYWORD2>\r
121       <KEYWORD2>setmetatable</KEYWORD2>\r
122       <KEYWORD2>tonumber</KEYWORD2>\r
123       <KEYWORD2>tostring</KEYWORD2>\r
124       <KEYWORD2>type</KEYWORD2>\r
125       <KEYWORD2>unpack</KEYWORD2>\r
126       <KEYWORD2>xpcall</KEYWORD2>\r
127       <KEYWORD2>_VERSION</KEYWORD2>\r
128       <KEYWORD2>LUA_PATH</KEYWORD2>\r
129       <KEYWORD2>_LOADED</KEYWORD2>\r
130       <KEYWORD2>_REQUIREDNAME</KEYWORD2>\r
131       <KEYWORD2>_ALERT</KEYWORD2>\r
132       <KEYWORD2>_ERRORMESSAGE</KEYWORD2>\r
133       <KEYWORD2>_PROMPT</KEYWORD2>\r
134       <KEYWORD2>__add</KEYWORD2>\r
135       <KEYWORD2>__sub</KEYWORD2>\r
136       <KEYWORD2>__mul</KEYWORD2>\r
137       <KEYWORD2>__div</KEYWORD2>\r
138       <KEYWORD2>__pow</KEYWORD2>\r
139       <KEYWORD2>__unm</KEYWORD2>\r
140       <KEYWORD2>__concat</KEYWORD2>\r
141       <KEYWORD2>__eq</KEYWORD2>\r
142       <KEYWORD2>__lt</KEYWORD2>\r
143       <KEYWORD2>__le</KEYWORD2>\r
144       <KEYWORD2>__index</KEYWORD2>\r
145       <KEYWORD2>__newindex</KEYWORD2>\r
146       <KEYWORD2>__call</KEYWORD2>\r
147       <KEYWORD2>__metatable</KEYWORD2>\r
148       <KEYWORD2>__mode</KEYWORD2>\r
149       <KEYWORD2>__tostring</KEYWORD2>\r
150       <KEYWORD2>__fenv</KEYWORD2>\r
151       <KEYWORD2>...</KEYWORD2>\r
152       <KEYWORD2>arg</KEYWORD2>\r
153       <KEYWORD2>coroutine.create</KEYWORD2>\r
154       <KEYWORD2>coroutine.resume</KEYWORD2>\r
155       <KEYWORD2>coroutine.status</KEYWORD2>\r
156       <KEYWORD2>coroutine.wrap</KEYWORD2>\r
157       <KEYWORD2>coroutine.yield</KEYWORD2>\r
158       <KEYWORD2>string.byte</KEYWORD2>\r
159       <KEYWORD2>string.char</KEYWORD2>\r
160       <KEYWORD2>string.dump</KEYWORD2>\r
161       <KEYWORD2>string.find</KEYWORD2>\r
162       <KEYWORD2>string.len</KEYWORD2>\r
163       <KEYWORD2>string.lower</KEYWORD2>\r
164       <KEYWORD2>string.rep</KEYWORD2>\r
165       <KEYWORD2>string.sub</KEYWORD2>\r
166       <KEYWORD2>string.upper</KEYWORD2>\r
167       <KEYWORD2>string.format</KEYWORD2>\r
168       <KEYWORD2>string.gfind</KEYWORD2>\r
169       <KEYWORD2>string.gsub</KEYWORD2>\r
170       <KEYWORD2>table.concat</KEYWORD2>\r
171       <KEYWORD2>table.foreach</KEYWORD2>\r
172       <KEYWORD2>table.foreachi</KEYWORD2>\r
173       <KEYWORD2>table.getn</KEYWORD2>\r
174       <KEYWORD2>table.sort</KEYWORD2>\r
175       <KEYWORD2>table.insert</KEYWORD2>\r
176       <KEYWORD2>table.remove</KEYWORD2>\r
177       <KEYWORD2>table.setn</KEYWORD2>\r
178       <KEYWORD2>math.abs</KEYWORD2>\r
179       <KEYWORD2>math.acos</KEYWORD2>\r
180       <KEYWORD2>math.asin</KEYWORD2>\r
181       <KEYWORD2>math.atan</KEYWORD2>\r
182       <KEYWORD2>math.atan2</KEYWORD2>\r
183       <KEYWORD2>math.ceil</KEYWORD2>\r
184       <KEYWORD2>math.cos</KEYWORD2>\r
185       <KEYWORD2>math.deg</KEYWORD2>\r
186       <KEYWORD2>math.exp</KEYWORD2>\r
187       <KEYWORD2>math.floor</KEYWORD2>\r
188       <KEYWORD2>math.log</KEYWORD2>\r
189       <KEYWORD2>math.log10</KEYWORD2>\r
190       <KEYWORD2>math.max</KEYWORD2>\r
191       <KEYWORD2>math.min</KEYWORD2>\r
192       <KEYWORD2>math.mod</KEYWORD2>\r
193       <KEYWORD2>math.pow</KEYWORD2>\r
194       <KEYWORD2>math.rad</KEYWORD2>\r
195       <KEYWORD2>math.sin</KEYWORD2>\r
196       <KEYWORD2>math.sqrt</KEYWORD2>\r
197       <KEYWORD2>math.tan</KEYWORD2>\r
198       <KEYWORD2>math.frexp</KEYWORD2>\r
199       <KEYWORD2>math.ldexp</KEYWORD2>\r
200       <KEYWORD2>math.random</KEYWORD2>\r
201       <KEYWORD2>math.randomseed</KEYWORD2>\r
202       <KEYWORD2>math.pi</KEYWORD2>\r
203       <KEYWORD2>io.close</KEYWORD2>\r
204       <KEYWORD2>io.flush</KEYWORD2>\r
205       <KEYWORD2>io.input</KEYWORD2>\r
206       <KEYWORD2>io.lines</KEYWORD2>\r
207       <KEYWORD2>io.open</KEYWORD2>\r
208       <KEYWORD2>io.read</KEYWORD2>\r
209       <KEYWORD2>io.tmpfile</KEYWORD2>\r
210       <KEYWORD2>io.type</KEYWORD2>\r
211       <KEYWORD2>io.write</KEYWORD2>\r
212       <KEYWORD2>io.stdin</KEYWORD2>\r
213       <KEYWORD2>io.stdout</KEYWORD2>\r
214       <KEYWORD2>io.stderr</KEYWORD2>\r
215       <KEYWORD2>os.clock</KEYWORD2>\r
216       <KEYWORD2>os.date</KEYWORD2>\r
217       <KEYWORD2>os.difftime</KEYWORD2>\r
218       <KEYWORD2>os.execute</KEYWORD2>\r
219       <KEYWORD2>os.exit</KEYWORD2>\r
220       <KEYWORD2>os.getenv</KEYWORD2>\r
221       <KEYWORD2>os.remove</KEYWORD2>\r
222       <KEYWORD2>os.rename</KEYWORD2>\r
223       <KEYWORD2>os.setlocale</KEYWORD2>\r
224       <KEYWORD2>os.time</KEYWORD2>\r
225       <KEYWORD2>os.tmpname</KEYWORD2>\r
226       <KEYWORD2>debug.debug</KEYWORD2>\r
227       <KEYWORD2>debug.gethook</KEYWORD2>\r
228       <KEYWORD2>debug.getinfo</KEYWORD2>\r
229       <KEYWORD2>debug.getlocal</KEYWORD2>\r
230       <KEYWORD2>debug.getupvalue</KEYWORD2>\r
231       <KEYWORD2>debug.setlocal</KEYWORD2>\r
232       <KEYWORD2>debug.setupvalue</KEYWORD2>\r
233       <KEYWORD2>debug.sethook</KEYWORD2>\r
234       <KEYWORD2>debug.traceback</KEYWORD2>\r
235     </KEYWORDS>\r
236   </RULES>\r
237 </MODE>\r
238 \r