1<lexer>
2 <config>
3 <name>Org Mode</name>
4 <alias>org</alias>
5 <alias>orgmode</alias>
6 <filename>*.org</filename>
7 <mime_type>text/org</mime_type>
8 </config>
9 <rules>
10 <state name="root">
11 <rule pattern="^# .*$">
12 <token type="Comment"/>
13 </rule>
14 <rule pattern="^(\*)( COMMENT)( .*)$">
15 <bygroups>
16 <token type="GenericHeading"/>
17 <token type="NameEntity"/>
18 <token type="GenericStrong"/>
19 </bygroups>
20 </rule>
21 <rule pattern="^(\*\*+)( COMMENT)( .*)$">
22 <bygroups>
23 <token type="GenericSubheading"/>
24 <token type="NameEntity"/>
25 <token type="Text"/>
26 </bygroups>
27 </rule>
28 <rule pattern="^(\*)( DONE)( .*)$">
29 <bygroups>
30 <token type="GenericHeading"/>
31 <token type="LiteralStringRegex"/>
32 <token type="GenericStrong"/>
33 </bygroups>
34 </rule>
35 <rule pattern="^(\*\*+)( DONE)( .*)$">
36 <bygroups>
37 <token type="GenericSubheading"/>
38 <token type="LiteralStringRegex"/>
39 <token type="Text"/>
40 </bygroups>
41 </rule>
42 <rule pattern="^(\*)( TODO)( .*)$">
43 <bygroups>
44 <token type="GenericHeading"/>
45 <token type="Error"/>
46 <token type="GenericStrong"/>
47 </bygroups>
48 </rule>
49 <rule pattern="^(\*\*+)( TODO)( .*)$">
50 <bygroups>
51 <token type="GenericSubheading"/>
52 <token type="Error"/>
53 <token type="Text"/>
54 </bygroups>
55 </rule>
56 <rule pattern="^(\*)( .+?)( :[a-zA-Z0-9_@:]+:)$">
57 <bygroups>
58 <token type="GenericHeading"/>
59 <token type="GenericStrong"/>
60 <token type="GenericEmph"/>
61 </bygroups>
62 </rule>
63 <rule pattern="^(\*)( .+)$">
64 <bygroups>
65 <token type="GenericHeading"/>
66 <token type="GenericStrong"/>
67 </bygroups>
68 </rule>
69 <rule pattern="^(\*\*+)( .+?)( :[a-zA-Z0-9_@:]+:)$">
70 <bygroups>
71 <token type="GenericSubheading"/>
72 <token type="Text"/>
73 <token type="GenericEmph"/>
74 </bygroups>
75 </rule>
76 <rule pattern="^(\*\*+)( .+)$">
77 <bygroups>
78 <token type="GenericSubheading"/>
79 <token type="Text"/>
80 </bygroups>
81 </rule>
82 <rule pattern="^( *)([+-] )(\[[ X]\])( .+)$">
83 <bygroups>
84 <token type="Text"/>
85 <token type="Keyword"/>
86 <token type="Keyword"/>
87 <usingself state="inline"/>
88 </bygroups>
89 </rule>
90 <rule pattern="^( +)(\* )(\[[ X]\])( .+)$">
91 <bygroups>
92 <token type="Text"/>
93 <token type="Keyword"/>
94 <token type="Keyword"/>
95 <usingself state="inline"/>
96 </bygroups>
97 </rule>
98 <rule pattern="^( *)([+-] )([^ \n]+ ::)( .+)$">
99 <bygroups>
100 <token type="Text"/>
101 <token type="Keyword"/>
102 <token type="Keyword"/>
103 <usingself state="inline"/>
104 </bygroups>
105 </rule>
106 <rule pattern="^( +)(\* )([^ \n]+ ::)( .+)$">
107 <bygroups>
108 <token type="Text"/>
109 <token type="Keyword"/>
110 <token type="Keyword"/>
111 <usingself state="inline"/>
112 </bygroups>
113 </rule>
114 <rule pattern="^( *)([+-] )(.+)$">
115 <bygroups>
116 <token type="Text"/>
117 <token type="Keyword"/>
118 <usingself state="inline"/>
119 </bygroups>
120 </rule>
121 <rule pattern="^( +)(\* )(.+)$">
122 <bygroups>
123 <token type="Text"/>
124 <token type="Keyword"/>
125 <usingself state="inline"/>
126 </bygroups>
127 </rule>
128 <rule pattern="^( *)([0-9]+[.)])( \[@[0-9]+\])( .+)$">
129 <bygroups>
130 <token type="Text"/>
131 <token type="Keyword"/>
132 <token type="GenericEmph"/>
133 <usingself state="inline"/>
134 </bygroups>
135 </rule>
136 <rule pattern="^( *)([0-9]+[.)])( .+)$">
137 <bygroups>
138 <token type="Text"/>
139 <token type="Keyword"/>
140 <usingself state="inline"/>
141 </bygroups>
142 </rule>
143 <rule pattern="(?i)^( *#\+begin: )([^ ]+)([\w\W]*?\n)([\w\W]*?)(^ *#\+end: *$)">
144 <bygroups>
145 <token type="Comment"/>
146 <token type="CommentSpecial"/>
147 <token type="Comment"/>
148 <usingself state="inline"/>
149 <token type="Comment"/>
150 </bygroups>
151 </rule>
152 <rule pattern="(?i)^( *#\+begin_comment *\n)([\w\W]*?)(^ *#\+end_comment *$)">
153 <bygroups>
154 <token type="Comment"/>
155 <token type="Comment"/>
156 <token type="Comment"/>
157 </bygroups>
158 </rule>
159 <rule pattern="(?i)^( *#\+begin_src )([^ \n]+)(.*?\n)([\w\W]*?)(^ *#\+end_src *$)">
160 <usingbygroup>
161 <sublexer_name_group>2</sublexer_name_group>
162 <code_group>4</code_group>
163 <emitters>
164 <token type="Comment"/>
165 <token type="CommentSpecial"/>
166 <token type="Comment"/>
167 <token type="Text"/>
168 <token type="Comment"/>
169 </emitters>
170 </usingbygroup>
171 </rule>
172 <rule pattern="(?i)^( *#\+begin_export )(\w+)( *\n)([\w\W]*?)(^ *#\+end_export *$)">
173 <usingbygroup>
174 <sublexer_name_group>2</sublexer_name_group>
175 <code_group>4</code_group>
176 <emitters>
177 <token type="Comment"/>
178 <token type="CommentSpecial"/>
179 <token type="Text"/>
180 <token type="Text"/>
181 <token type="Comment"/>
182 </emitters>
183 </usingbygroup>
184 </rule>
185 <rule pattern="(?i)^( *#\+begin_)(\w+)( *\n)([\w\W]*?)(^ *#\+end_\2)( *$)">
186 <bygroups>
187 <token type="Comment"/>
188 <token type="Comment"/>
189 <token type="Text"/>
190 <token type="Text"/>
191 <token type="Comment"/>
192 <token type="Text"/>
193 </bygroups>
194 </rule>
195 <rule pattern="^(#\+\w+)(:.*)$">
196 <bygroups>
197 <token type="CommentSpecial"/>
198 <token type="Comment"/>
199 </bygroups>
200 </rule>
201 <rule pattern="(?i)^( *:\w+: *\n)([\w\W]*?)(^ *:end: *$)">
202 <bygroups>
203 <token type="Comment"/>
204 <token type="CommentSpecial"/>
205 <token type="Comment"/>
206 </bygroups>
207 </rule>
208 <rule pattern="^(.*)(\\\\)$">
209 <bygroups>
210 <usingself state="inline"/>
211 <token type="Operator"/>
212 </bygroups>
213 </rule>
214 <rule pattern="(?i)^( *(?:DEADLINE|SCHEDULED): )(<[^<>]+?> *)$">
215 <bygroups>
216 <token type="Comment"/>
217 <token type="CommentSpecial"/>
218 </bygroups>
219 </rule>
220 <rule pattern="(?i)^( *CLOSED: )(\[[^][]+?\] *)$">
221 <bygroups>
222 <token type="Comment"/>
223 <token type="CommentSpecial"/>
224 </bygroups>
225 </rule>
226 <rule>
227 <include state="inline"/>
228 </rule>
229 </state>
230 <state name="inline">
231 <rule pattern="(\s*)(\*[^ \n*][^*]+?[^ \n*]\*)((?=\W|\n|$))">
232 <bygroups>
233 <token type="Text"/>
234 <token type="GenericStrong"/>
235 <token type="Text"/>
236 </bygroups>
237 </rule>
238 <rule pattern="(\s*)(/[^/]+?/)((?=\W|\n|$))">
239 <bygroups>
240 <token type="Text"/>
241 <token type="GenericEmph"/>
242 <token type="Text"/>
243 </bygroups>
244 </rule>
245 <rule pattern="(\s*)(=[^\n=]+?=)((?=\W|\n|$))">
246 <bygroups>
247 <token type="Text"/>
248 <token type="NameClass"/>
249 <token type="Text"/>
250 </bygroups>
251 </rule>
252 <rule pattern="(\s*)(~[^\n~]+?~)((?=\W|\n|$))">
253 <bygroups>
254 <token type="Text"/>
255 <token type="NameClass"/>
256 <token type="Text"/>
257 </bygroups>
258 </rule>
259 <rule pattern="(\s*)(\+[^+]+?\+)((?=\W|\n|$))">
260 <bygroups>
261 <token type="Text"/>
262 <token type="GenericDeleted"/>
263 <token type="Text"/>
264 </bygroups>
265 </rule>
266 <rule pattern="(\s*)(_[^_]+?_)((?=\W|\n|$))">
267 <bygroups>
268 <token type="Text"/>
269 <token type="GenericUnderline"/>
270 <token type="Text"/>
271 </bygroups>
272 </rule>
273 <rule pattern="(<)([^<>]+?)(>)">
274 <bygroups>
275 <token type="Text"/>
276 <token type="LiteralString"/>
277 <token type="Text"/>
278 </bygroups>
279 </rule>
280 <rule pattern="[{]{3}[^}]+[}]{3}">
281 <token type="NameBuiltin"/>
282 </rule>
283 <rule pattern="([^[])(\[fn:)([^]]+?)(\])([^]])">
284 <bygroups>
285 <token type="Text"/>
286 <token type="NameBuiltinPseudo"/>
287 <token type="LiteralString"/>
288 <token type="NameBuiltinPseudo"/>
289 <token type="Text"/>
290 </bygroups>
291 </rule>
292 <rule pattern="(\[\[)([^][]+?)(\]\[)([^][]+)(\]\])">
293 <bygroups>
294 <token type="Text"/>
295 <token type="NameAttribute"/>
296 <token type="Text"/>
297 <token type="NameTag"/>
298 <token type="Text"/>
299 </bygroups>
300 </rule>
301 <rule pattern="(\[\[)([^][]+?)(\]\])">
302 <bygroups>
303 <token type="Text"/>
304 <token type="NameAttribute"/>
305 <token type="Text"/>
306 </bygroups>
307 </rule>
308 <rule pattern="(<<)([^<>]+?)(>>)">
309 <bygroups>
310 <token type="Text"/>
311 <token type="NameAttribute"/>
312 <token type="Text"/>
313 </bygroups>
314 </rule>
315 <rule pattern="^( *)(\|[ -].*?[ -]\|)$">
316 <bygroups>
317 <token type="Text"/>
318 <token type="LiteralString"/>
319 </bygroups>
320 </rule>
321 <rule pattern="\n">
322 <token type="Text"/>
323 </rule>
324 <rule pattern=".">
325 <token type="Text"/>
326 </rule>
327 </state>
328 </rules>
329</lexer>