]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/groovy.xml
5e0d8ea1a8f97d403eafe48e8c470aed0857b48a
[factor.git] / basis / xmode / modes / groovy.xml
1 <?xml version="1.0"?>\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
3 \r
4 <!--\r
5 <MODE NAME="groovy"                     FILE="groovy.xml"\r
6                                 FILE_NAME_GLOB="*.{groovy,grv}"/>\r
7 -->\r
8 \r
9 <MODE>\r
10         <PROPS>\r
11                 <PROPERTY NAME="commentStart" VALUE="/*" />\r
12                 <PROPERTY NAME="commentEnd" VALUE="*/" />\r
13                 <PROPERTY NAME="lineComment" VALUE="//" />\r
14                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
15                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
16                 <PROPERTY NAME="indentNextLine"\r
17                         VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />\r
18         </PROPS>\r
19 \r
20         <RULES ESCAPE="\" HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE">\r
21                 <!-- Silly comment -->\r
22                 <SEQ TYPE="COMMENT1">/**/</SEQ>\r
23 \r
24                 <!-- Javadoc comment -->\r
25                 <SPAN TYPE="COMMENT3" DELEGATE="GROOVYDOC">\r
26                         <BEGIN>/**</BEGIN>\r
27                         <END>*/</END>\r
28                 </SPAN>\r
29 \r
30                 <!-- Java comment (C style) -->\r
31                 <SPAN TYPE="COMMENT1">\r
32                         <BEGIN>/*</BEGIN>\r
33                         <END>*/</END>\r
34                 </SPAN>\r
35 \r
36                 <SPAN TYPE="LITERAL1" DELEGATE="LITERAL">\r
37                         <BEGIN>"</BEGIN>\r
38                         <END>"</END>\r
39                 </SPAN>\r
40                 <SPAN TYPE="LITERAL1">\r
41                         <BEGIN>'</BEGIN>\r
42                         <END>'</END>\r
43                 </SPAN>\r
44 \r
45                 <!-- heredoc -->\r
46                 <SPAN_REGEXP HASH_CHAR="&lt;&lt;&lt;" TYPE="LITERAL1" DELEGATE="LITERAL">\r
47                         <BEGIN><![CDATA[<<<([\p{Alpha}_][\p{Alnum}_]*)\s*]]></BEGIN>\r
48                         <END>$1</END>\r
49                 </SPAN_REGEXP>\r
50 \r
51                 <SEQ TYPE="OPERATOR">=~</SEQ>\r
52                 <SEQ TYPE="OPERATOR">=</SEQ>\r
53                 <SEQ TYPE="OPERATOR">|</SEQ>\r
54                 <SEQ TYPE="OPERATOR">!</SEQ>\r
55                 <SEQ TYPE="OPERATOR">&lt;=&gt;</SEQ>\r
56                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
57                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
58                 <SEQ TYPE="OPERATOR">+</SEQ>\r
59                 <SEQ TYPE="OPERATOR">-&gt;</SEQ>\r
60                 <SEQ TYPE="OPERATOR">-</SEQ>\r
61                 <SEQ TYPE="OPERATOR">?</SEQ>\r
62                 <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
63 \r
64                 <!-- workaround to stop "*" from being colorized\r
65                      in import statements. -->\r
66                 <SEQ TYPE="NULL">.*</SEQ>\r
67 \r
68                 <!-- Comments -->\r
69                 <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>\r
70 \r
71                 <!-- Function calls -->\r
72                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>\r
73                 <SEQ TYPE="OPERATOR">)</SEQ>\r
74 \r
75                 <KEYWORDS>\r
76                         <KEYWORD1>abstract</KEYWORD1>\r
77                         <KEYWORD1>break</KEYWORD1>\r
78                         <KEYWORD1>case</KEYWORD1>\r
79                         <KEYWORD1>catch</KEYWORD1>\r
80                         <KEYWORD1>continue</KEYWORD1>\r
81                         <KEYWORD1>default</KEYWORD1>\r
82                         <KEYWORD1>do</KEYWORD1>\r
83                         <KEYWORD1>else</KEYWORD1>\r
84                         <KEYWORD1>extends</KEYWORD1>\r
85                         <KEYWORD1>final</KEYWORD1>\r
86                         <KEYWORD1>finally</KEYWORD1>\r
87                         <KEYWORD1>for</KEYWORD1>\r
88                         <KEYWORD1>if</KEYWORD1>\r
89                         <KEYWORD1>implements</KEYWORD1>\r
90                         <KEYWORD1>instanceof</KEYWORD1>\r
91                         <KEYWORD1>native</KEYWORD1>\r
92                         <KEYWORD1>new</KEYWORD1>\r
93                         <KEYWORD1>private</KEYWORD1>\r
94                         <KEYWORD1>protected</KEYWORD1>\r
95                         <KEYWORD1>public</KEYWORD1>\r
96                         <KEYWORD1>return</KEYWORD1>\r
97                         <KEYWORD1>static</KEYWORD1>\r
98                         <KEYWORD1>switch</KEYWORD1>\r
99                         <KEYWORD1>synchronized</KEYWORD1>\r
100                         <KEYWORD1>throw</KEYWORD1>\r
101                         <KEYWORD1>throws</KEYWORD1>\r
102                         <KEYWORD1>transient</KEYWORD1>\r
103                         <KEYWORD1>try</KEYWORD1>\r
104                         <KEYWORD1>volatile</KEYWORD1>\r
105                         <KEYWORD1>while</KEYWORD1>\r
106 \r
107                         <KEYWORD1>strictfp</KEYWORD1>\r
108 \r
109                         <KEYWORD1>package</KEYWORD1>\r
110                         <KEYWORD1>import</KEYWORD1>\r
111 \r
112                         <!-- groovy keywords -->\r
113                         <KEYWORD2>as</KEYWORD2>\r
114                         <KEYWORD2>assert</KEYWORD2>\r
115                         <KEYWORD2>def</KEYWORD2>\r
116                         <KEYWORD2>mixin</KEYWORD2>\r
117                         <KEYWORD2>property</KEYWORD2>\r
118                         <KEYWORD2>test</KEYWORD2>\r
119                         <KEYWORD2>using</KEYWORD2>\r
120                         <KEYWORD2>in</KEYWORD2>\r
121 \r
122                         <!-- types -->\r
123                         <KEYWORD3>boolean</KEYWORD3>\r
124                         <KEYWORD3>byte</KEYWORD3>\r
125                         <KEYWORD3>char</KEYWORD3>\r
126                         <KEYWORD3>class</KEYWORD3>\r
127                         <KEYWORD3>double</KEYWORD3>\r
128                         <KEYWORD3>float</KEYWORD3>\r
129                         <KEYWORD3>int</KEYWORD3>\r
130                         <KEYWORD3>interface</KEYWORD3>\r
131                         <KEYWORD3>long</KEYWORD3>\r
132                         <KEYWORD3>short</KEYWORD3>\r
133                         <KEYWORD3>void</KEYWORD3>\r
134 \r
135                         <!-- Groovy JDK stuff -->\r
136                         <KEYWORD4>abs</KEYWORD4>\r
137                         <KEYWORD4>any</KEYWORD4>\r
138                         <KEYWORD4>append</KEYWORD4>\r
139                         <KEYWORD4>asList</KEYWORD4>\r
140                         <KEYWORD4>asWritable</KEYWORD4>\r
141                         <KEYWORD4>call</KEYWORD4>\r
142                         <KEYWORD4>collect</KEYWORD4>\r
143                         <KEYWORD4>compareTo</KEYWORD4>\r
144                         <KEYWORD4>count</KEYWORD4>\r
145                         <KEYWORD4>div</KEYWORD4>\r
146                         <KEYWORD4>dump</KEYWORD4>\r
147                         <KEYWORD4>each</KEYWORD4>\r
148                         <KEYWORD4>eachByte</KEYWORD4>\r
149                         <KEYWORD4>eachFile</KEYWORD4>\r
150                         <KEYWORD4>eachLine</KEYWORD4>\r
151                         <KEYWORD4>every</KEYWORD4>\r
152                         <KEYWORD4>find</KEYWORD4>\r
153                         <KEYWORD4>findAll</KEYWORD4>\r
154                         <KEYWORD4>flatten</KEYWORD4>\r
155                         <KEYWORD4>getAt</KEYWORD4>\r
156                         <KEYWORD4>getErr</KEYWORD4>\r
157                         <KEYWORD4>getIn</KEYWORD4>\r
158                         <KEYWORD4>getOut</KEYWORD4>\r
159                         <KEYWORD4>getText</KEYWORD4>\r
160                         <KEYWORD4>grep</KEYWORD4>\r
161                         <KEYWORD4>immutable</KEYWORD4>\r
162                         <KEYWORD4>inject</KEYWORD4>\r
163                         <KEYWORD4>inspect</KEYWORD4>\r
164                         <KEYWORD4>intersect</KEYWORD4>\r
165                         <KEYWORD4>invokeMethods</KEYWORD4>\r
166                         <KEYWORD4>isCase</KEYWORD4>\r
167                         <KEYWORD4>join</KEYWORD4>\r
168                         <KEYWORD4>leftShift</KEYWORD4>\r
169                         <KEYWORD4>minus</KEYWORD4>\r
170                         <KEYWORD4>multiply</KEYWORD4>\r
171                         <KEYWORD4>newInputStream</KEYWORD4>\r
172                         <KEYWORD4>newOutputStream</KEYWORD4>\r
173                         <KEYWORD4>newPrintWriter</KEYWORD4>\r
174                         <KEYWORD4>newReader</KEYWORD4>\r
175                         <KEYWORD4>newWriter</KEYWORD4>\r
176                         <KEYWORD4>next</KEYWORD4>\r
177                         <KEYWORD4>plus</KEYWORD4>\r
178                         <KEYWORD4>pop</KEYWORD4>\r
179                         <KEYWORD4>power</KEYWORD4>\r
180                         <KEYWORD4>previous</KEYWORD4>\r
181                         <KEYWORD4>print</KEYWORD4>\r
182                         <KEYWORD4>println</KEYWORD4>\r
183                         <KEYWORD4>push</KEYWORD4>\r
184                         <KEYWORD4>putAt</KEYWORD4>\r
185                         <KEYWORD4>read</KEYWORD4>\r
186                         <KEYWORD4>readBytes</KEYWORD4>\r
187                         <KEYWORD4>readLines</KEYWORD4>\r
188                         <KEYWORD4>reverse</KEYWORD4>\r
189                         <KEYWORD4>reverseEach</KEYWORD4>\r
190                         <KEYWORD4>round</KEYWORD4>\r
191                         <KEYWORD4>size</KEYWORD4>\r
192                         <KEYWORD4>sort</KEYWORD4>\r
193                         <KEYWORD4>splitEachLine</KEYWORD4>\r
194                         <KEYWORD4>step</KEYWORD4>\r
195                         <KEYWORD4>subMap</KEYWORD4>\r
196                         <KEYWORD4>times</KEYWORD4>\r
197                         <KEYWORD4>toInteger</KEYWORD4>\r
198                         <KEYWORD4>toList</KEYWORD4>\r
199                         <KEYWORD4>tokenize</KEYWORD4>\r
200                         <KEYWORD4>upto</KEYWORD4>\r
201                         <KEYWORD4>waitForOrKill</KEYWORD4>\r
202                         <KEYWORD4>withPrintWriter</KEYWORD4>\r
203                         <KEYWORD4>withReader</KEYWORD4>\r
204                         <KEYWORD4>withStream</KEYWORD4>\r
205                         <KEYWORD4>withWriter</KEYWORD4>\r
206                         <KEYWORD4>withWriterAppend</KEYWORD4>\r
207                         <KEYWORD4>write</KEYWORD4>\r
208                         <KEYWORD4>writeLine</KEYWORD4>\r
209 \r
210                         <LITERAL2>false</LITERAL2>\r
211                         <LITERAL2>null</LITERAL2>\r
212                         <LITERAL2>super</LITERAL2>\r
213                         <LITERAL2>this</LITERAL2>\r
214                         <LITERAL2>true</LITERAL2>\r
215 \r
216                         <!-- this is specific to groovy, treat like `this`? -->\r
217                         <LITERAL3>it</LITERAL3>\r
218 \r
219                         <INVALID>goto</INVALID>\r
220                         <INVALID>const</INVALID>\r
221                 </KEYWORDS>\r
222         </RULES>\r
223 \r
224         <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">\r
225                 <!-- Variables -->\r
226                 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
227                         <BEGIN>${</BEGIN>\r
228                         <END>}</END>\r
229                 </SPAN>\r
230 \r
231                 <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
232         </RULES>\r
233 \r
234         <RULES SET="GROOVYDOC" DEFAULT="COMMENT3" IGNORE_CASE="TRUE">\r
235                 <!-- so that @link{...} is highlighted -->\r
236                 <SEQ TYPE="COMMENT3">{</SEQ>\r
237 \r
238                 <!-- so that *@param is highlighted -->\r
239                 <SEQ TYPE="COMMENT3">*</SEQ>\r
240 \r
241                 <!-- HTML comments -->\r
242                 <SPAN TYPE="COMMENT1">\r
243                         <BEGIN>&lt;!--</BEGIN>\r
244                         <END>--&gt;</END>\r
245                 </SPAN>\r
246 \r
247                 <!-- Javadoc allows this -->\r
248                 <SEQ TYPE="COMMENT3">&lt;&lt;</SEQ>\r
249                 <SEQ TYPE="COMMENT3">&lt;=</SEQ>\r
250                 <SEQ TYPE="COMMENT3">&lt; </SEQ>\r
251 \r
252                 <!-- HTML tags -->\r
253                 <SPAN TYPE="MARKUP" DELEGATE="xml::TAGS"\r
254                         NO_LINE_BREAK="TRUE">\r
255                         <BEGIN>&lt;</BEGIN>\r
256                         <END>&gt;</END>\r
257                 </SPAN>\r
258 \r
259                 <MARK_FOLLOWING TYPE="LABEL">@</MARK_FOLLOWING>\r
260         </RULES>\r
261 \r
262 </MODE>\r