]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/kotlin.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / kotlin.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
3
4 <!-- Kotlin mode by Sergey Mashkov aka cy6erGn0m -->
5 <MODE>
6         <PROPS>
7                 <PROPERTY NAME="commentStart" VALUE="/*" />
8                 <PROPERTY NAME="commentEnd" VALUE="*/" />
9                 <PROPERTY NAME="lineComment" VALUE="//" />
10                 <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
11
12                 <!-- Auto indent -->
13                 <PROPERTY NAME="indentOpenBrackets" VALUE="{[" />
14                 <PROPERTY NAME="indentCloseBrackets" VALUE="]}" />
15                 <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
16                 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
17                 <PROPERTY NAME="indentNextLine"
18                         VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
19                 <PROPERTY NAME="unindentThisLine"
20                         VALUE="^.*(else:\s*|when.*:.*)$" />
21         </PROPS>
22
23         <RULES
24                 IGNORE_CASE="FALSE"
25                 HIGHLIGHT_DIGITS="TRUE"
26                 DIGIT_RE="(0x[\p{XDigit}]+[lL]?|[\p{Digit}]+(e[\p{Digit}]*)?[lLdDfF]?)">
27
28                 <SPAN TYPE="COMMENT3">
29                         <BEGIN>/**</BEGIN>
30                         <END>*/</END>
31                 </SPAN>
32
33                 <SPAN TYPE="COMMENT1">
34                         <BEGIN>/*</BEGIN>
35                         <END>*/</END>
36                 </SPAN>
37
38                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
39                         <BEGIN>"</BEGIN>
40                         <END>"</END>
41                 </SPAN>
42
43                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
44                         <BEGIN>'</BEGIN>
45                         <END>'</END>
46                 </SPAN>
47                 
48                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="\">
49                         <BEGIN>"""</BEGIN>
50                         <END>"""</END>
51                 </SPAN>
52
53                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
54                 <SEQ TYPE="OPERATOR">)</SEQ>
55
56                 <SEQ TYPE="COMMENT2">//--&gt;</SEQ>
57                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
58                 <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="/" AT_WORD_START="TRUE">/[^\p{Blank}]*?/</SEQ_REGEXP>
59
60                 <SEQ TYPE="COMMENT1">&lt;!--</SEQ>
61
62                 <SEQ TYPE="OPERATOR">-&gt;</SEQ>
63                 <SEQ TYPE="OPERATOR">=</SEQ>
64                 <SEQ TYPE="OPERATOR">!</SEQ>
65                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>
66                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
67                 <SEQ TYPE="OPERATOR">+</SEQ>
68                 <SEQ TYPE="OPERATOR">-</SEQ>
69                 <SEQ TYPE="OPERATOR">/</SEQ>
70                 <SEQ TYPE="OPERATOR">*</SEQ>
71                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
72                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
73                 <SEQ TYPE="OPERATOR">%</SEQ>
74                 <SEQ TYPE="OPERATOR">&amp;</SEQ>
75                 <SEQ TYPE="OPERATOR">|</SEQ>
76                 <SEQ TYPE="OPERATOR">^</SEQ>
77                 <SEQ TYPE="OPERATOR">~</SEQ>
78                 <SEQ TYPE="OPERATOR">.</SEQ>
79                 <SEQ TYPE="OPERATOR">}</SEQ>
80                 <SEQ TYPE="OPERATOR">{</SEQ>
81                 <SEQ TYPE="OPERATOR">,</SEQ>
82                 <SEQ TYPE="OPERATOR">;</SEQ>
83                 <SEQ TYPE="OPERATOR">]</SEQ>
84                 <SEQ TYPE="OPERATOR">::</SEQ>
85                 <SEQ TYPE="OPERATOR">[</SEQ>
86                 <SEQ TYPE="OPERATOR">?</SEQ>
87                 <MARK_PREVIOUS AT_WHITESPACE_END="TRUE"
88                         MATCH_TYPE="OPERATOR"
89                         TYPE="LABEL">:</MARK_PREVIOUS>
90                 <SEQ TYPE="OPERATOR">:</SEQ>
91
92                 <KEYWORDS>
93                         <KEYWORD1>break</KEYWORD1>
94                         <KEYWORD1>continue</KEYWORD1>
95                         <KEYWORD1>else</KEYWORD1>
96                         <KEYWORD1>for</KEYWORD1>
97                         <KEYWORD1>when</KEYWORD1>
98                         <KEYWORD1>fun</KEYWORD1>
99                         <KEYWORD1>if</KEYWORD1>
100                         <KEYWORD1>return</KEYWORD1>
101                         <LITERAL2>this</LITERAL2>
102                         <KEYWORD1>vararg</KEYWORD1>
103                         <KEYWORD1>var</KEYWORD1>
104                         <KEYWORD1>val</KEYWORD1>
105                         <KEYWORD1>by</KEYWORD1>
106                         <KEYWORD1>while</KEYWORD1>
107                         <KEYWORD1>class</KEYWORD1>
108                         <KEYWORD1>companion</KEYWORD1>
109                         <KEYWORD1>trait</KEYWORD1>
110                         <KEYWORD1>object</KEYWORD1>
111                         <KEYWORD1>abstract</KEYWORD1>
112                         <KEYWORD1>override</KEYWORD1>
113                         <KEYWORD2>open</KEYWORD2>
114                         <KEYWORD2>attribute</KEYWORD2>
115                         <KEYWORD2>inline</KEYWORD2>
116                         <KEYWORD2>data</KEYWORD2>
117                         <KEYWORD2>get</KEYWORD2>
118                         <KEYWORD2>set</KEYWORD2>
119                         
120                         <KEYWORD3>Any</KEYWORD3>
121                         <KEYWORD3>Boolean</KEYWORD3>
122                         <KEYWORD3>Byte</KEYWORD3>
123                         <KEYWORD3>Unit</KEYWORD3>
124                         <KEYWORD3>String</KEYWORD3>
125                         <KEYWORD3>Int</KEYWORD3>
126                         <KEYWORD3>Short</KEYWORD3>
127                         <KEYWORD3>Long</KEYWORD3>
128                         <KEYWORD3>Double</KEYWORD3>
129                         <KEYWORD3>Float</KEYWORD3>
130                         <KEYWORD3>Char</KEYWORD3>
131                         <KEYWORD3>Array</KEYWORD3>
132                         
133                         <KEYWORD1>catch</KEYWORD1>
134                         <KEYWORD1>finally</KEYWORD1>
135
136                         <KEYWORD1>do</KEYWORD1>
137                         <KEYWORD1>enum</KEYWORD1>
138                         <KEYWORD1>constructor</KEYWORD1>
139                         <KEYWORD3>init</KEYWORD3>
140                         <KEYWORD1>typealias</KEYWORD1>
141
142                         <KEYWORD2>package</KEYWORD2>
143                         <KEYWORD2>import</KEYWORD2>
144                         <KEYWORD1>is</KEYWORD1>
145                         <KEYWORD2>it</KEYWORD2>
146                         <KEYWORD1>as</KEYWORD1>
147                         <KEYWORD1>public</KEYWORD1>
148                         <KEYWORD1>internal</KEYWORD1>
149                         <KEYWORD1>protected</KEYWORD1>
150                         <KEYWORD1>private</KEYWORD1>
151                         <KEYWORD1>inner</KEYWORD1>
152                         <KEYWORD1>super</KEYWORD1>
153
154                         <KEYWORD1>throw</KEYWORD1>
155                         <KEYWORD1>throws</KEYWORD1>
156                         <KEYWORD1>transient</KEYWORD1>
157                         <KEYWORD1>try</KEYWORD1>
158                         <KEYWORD1>volatile</KEYWORD1>
159
160                         <LITERAL2>null</LITERAL2>
161                         <LITERAL2>false</LITERAL2>
162                         <LITERAL2>true</LITERAL2>
163                         
164                         <KEYWORD1>in</KEYWORD1>
165                         <KEYWORD1>out</KEYWORD1>
166                 </KEYWORDS>
167         </RULES>
168 </MODE>