]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/tcl.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / tcl.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- Tcl mode by Michael Jacobson.
6      cplusplus and pascal modes used as reference.
7     2006/10/20 Jean-Francois Larvoire:
8      - Fixed comments detection: Only # at the beginning of Tcl commands are comments!
9      - Quoted strings can span multiple lines.
10      - Added recursive in-string substituted command and variable analysis.
11      - Added numerous missing tcl keywords and variables up to version 8.4.14.
12      - Removed $ on global variable keywords, as they're often used with $::.
13      - Added Expect keywords, as KEYWORD2. (send was already in tk as KEYWORD2)
14      - Avoid colouring substituted variables that are homonyms of a keyword.
15      - Highlight hexadecimal numbers too.
16     2006/10/23 Jean-Francois Larvoire:
17      - Strings and blocks only begin at word start.
18      - Updated {# comment detection to manage the whole {} block. This catches
19        all { and }, and makes it unnecessary to define them as KEYWORDs.
20      - Bug fix: Do not delegate content evaluation for ${} scalar variables.
21     2009/02/10: Albert Davidson Chou - added lineComment property for TCL mode (2119958)
22
23     Limitations:
24      - Unbalanced quotes or brackets within braces, such as in regular expressions,
25   will confuse the analysis. Workaround: If possible, use a \ to escape the
26   unbalanced character. Else add a ;# comment with a closing " or ].
27     Known bugs:
28      - Continuation line detection does not work. Same bug as espace chars below.
29      - ; highlighting as an OPERATOR does not work.
30     Known bugs (Were there before, and I failed to fix them):
31      - \c escape colouring does not work for escapes embedded in words.
32            I attemted numerous workarounds using spans and regexps, but they
33      all seem to fail to detect anything beginning with a \. And using
34      NO_ESCAPE="TRUE" does not help.
35      - {} within quoted strings should not affect indentation. -->
36
37 <MODE>
38   <PROPS>
39     <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
40     <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
41     <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
42     <PROPERTY NAME="lineComment" VALUE="#" />
43   </PROPS>
44
45   <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
46     DIGIT_RE="0x\p{XDigit}+|\d+">
47
48     <!-- Continuation line. Processed before anything else by Tcl. (Does not work)-->
49     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
50
51     <!-- Comments after a ; command separator -->
52     <!-- Note: The ; isn't bolded as other operators. Why?-->
53     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR=";" DELEGATE="TCL_COMMENT">;\s*(?=#)</EOL_SPAN_REGEXP>
54     <!-- Comments at the { opening of a block -->
55     <SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="{" DELEGATE="TCL_COMMENT">
56       <BEGIN>\{\s*(?=#)</BEGIN>
57       <END>}</END>
58     </SPAN_REGEXP>
59     <!-- Comments on a line of their own. -->
60     <EOL_SPAN TYPE="COMMENT1" AT_WHITESPACE_END="TRUE">#</EOL_SPAN>
61
62     <!-- Quoted strings -->
63     <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="TCL_STRING">
64       <BEGIN>"</BEGIN>
65       <END>"</END>
66     </SPAN>
67
68     <!-- Avoid colouring substituted variables that are homonyms of a keyword -->
69     <!-- Indexed array variable. Delegate to MAIN, as the index string is evaluated by Tcl.-->
70     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
71       <BEGIN>\$(\w|::)+\(</BEGIN>
72       <END>)</END>
73     </SPAN_REGEXP>
74     <!-- General scalar variable. Do not delegate, as the ${} block content is not evalutated by Tcl. -->
75     <SPAN TYPE="NULL">
76       <BEGIN>${</BEGIN>
77       <END>}</END>
78     </SPAN>
79     <!-- Plain scalar variable. -->
80     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
81
82     <!-- Sub-block -->
83     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="MAIN">
84       <BEGIN>{</BEGIN>
85       <END>}</END>
86     </SPAN>
87
88     <!-- Sub-commands to be substituted -->
89     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
90       <BEGIN>[</BEGIN>
91       <END>]</END>
92     </SPAN>
93
94     <!-- Escaped characters -->
95     <SEQ TYPE="KEYWORD3">\a</SEQ>
96     <SEQ TYPE="KEYWORD3">\b</SEQ>
97     <SEQ TYPE="KEYWORD3">\f</SEQ>
98     <SEQ TYPE="KEYWORD3">\n</SEQ>
99     <SEQ TYPE="KEYWORD3">\r</SEQ>
100     <SEQ TYPE="KEYWORD3">\t</SEQ>
101     <SEQ TYPE="KEYWORD3">\v</SEQ>
102
103     <!-- Tcl syntax operators. -->
104     <!-- Note that "{}[]" are already caught above.-->
105     <!-- Delegate to main, as a new command begins after the ; -->
106     <SEQ TYPE="OPERATOR" DELEGATE="MAIN">;</SEQ>
107     <SEQ TYPE="NULL">::</SEQ>
108
109     <!-- Math expression operators -->
110     <SEQ TYPE="OPERATOR">=</SEQ>
111     <SEQ TYPE="OPERATOR">!</SEQ>
112     <SEQ TYPE="OPERATOR">&gt;=</SEQ>
113     <SEQ TYPE="OPERATOR">&lt;=</SEQ>
114     <SEQ TYPE="OPERATOR">+</SEQ>
115     <SEQ TYPE="OPERATOR">-</SEQ>
116     <SEQ TYPE="OPERATOR">/</SEQ>
117     <SEQ TYPE="OPERATOR">*</SEQ>
118     <SEQ TYPE="OPERATOR">&gt;</SEQ>
119     <SEQ TYPE="OPERATOR">&lt;</SEQ>
120     <SEQ TYPE="OPERATOR">%</SEQ>
121     <SEQ TYPE="OPERATOR">&amp;</SEQ>
122     <SEQ TYPE="OPERATOR">|</SEQ>
123     <SEQ TYPE="OPERATOR">^</SEQ>
124     <SEQ TYPE="OPERATOR">~</SEQ>
125
126     <KEYWORDS>
127       <!-- Tcl keywords-->
128       <KEYWORD1>append</KEYWORD1>
129       <KEYWORD1>array</KEYWORD1>
130       <KEYWORD1>concat</KEYWORD1>
131       <KEYWORD1>console</KEYWORD1>
132       <KEYWORD1>eval</KEYWORD1>
133       <KEYWORD1>expr</KEYWORD1>
134       <KEYWORD1>format</KEYWORD1>
135       <KEYWORD1>global</KEYWORD1>
136       <KEYWORD1>set</KEYWORD1>
137       <KEYWORD1>trace</KEYWORD1>
138       <KEYWORD1>unset</KEYWORD1>
139       <KEYWORD1>upvar</KEYWORD1>
140       <KEYWORD1>join</KEYWORD1>
141       <KEYWORD1>lappend</KEYWORD1>
142       <KEYWORD1>lindex</KEYWORD1>
143       <KEYWORD1>linsert</KEYWORD1>
144       <KEYWORD1>list</KEYWORD1>
145       <KEYWORD1>llength</KEYWORD1>
146       <KEYWORD1>lrange</KEYWORD1>
147       <KEYWORD1>lreplace</KEYWORD1>
148       <KEYWORD1>lsearch</KEYWORD1>
149       <KEYWORD1>lsort</KEYWORD1>
150       <KEYWORD1>split</KEYWORD1>
151       <KEYWORD1>scan</KEYWORD1>
152       <KEYWORD1>string</KEYWORD1>
153       <KEYWORD1>regexp</KEYWORD1>
154       <KEYWORD1>regsub</KEYWORD1>
155       <KEYWORD1>if</KEYWORD1>
156       <KEYWORD1>else</KEYWORD1>
157       <KEYWORD1>elseif</KEYWORD1>
158       <KEYWORD1>switch</KEYWORD1>
159       <KEYWORD1>for</KEYWORD1>
160       <KEYWORD1>foreach</KEYWORD1>
161       <KEYWORD1>while</KEYWORD1>
162       <KEYWORD1>break</KEYWORD1>
163       <KEYWORD1>continue</KEYWORD1>
164       <KEYWORD1>proc</KEYWORD1>
165       <KEYWORD1>return</KEYWORD1>
166       <KEYWORD1>source</KEYWORD1>
167       <KEYWORD1>unknown</KEYWORD1>
168       <KEYWORD1>uplevel</KEYWORD1>
169       <KEYWORD1>cd</KEYWORD1>
170       <KEYWORD1>close</KEYWORD1>
171       <KEYWORD1>eof</KEYWORD1>
172       <KEYWORD1>file</KEYWORD1>
173       <KEYWORD1>flush</KEYWORD1>
174       <KEYWORD1>gets</KEYWORD1>
175       <KEYWORD1>glob</KEYWORD1>
176       <KEYWORD1>open</KEYWORD1>
177       <KEYWORD1>read</KEYWORD1>
178       <KEYWORD1>puts</KEYWORD1>
179       <KEYWORD1>pwd</KEYWORD1>
180       <KEYWORD1>seek</KEYWORD1>
181       <KEYWORD1>tell</KEYWORD1>
182       <KEYWORD1>catch</KEYWORD1>
183       <KEYWORD1>error</KEYWORD1>
184       <KEYWORD1>exec</KEYWORD1>
185       <KEYWORD1>pid</KEYWORD1>
186       <KEYWORD1>after</KEYWORD1>
187       <KEYWORD1>time</KEYWORD1>
188       <KEYWORD1>exit</KEYWORD1>
189       <KEYWORD1>history</KEYWORD1>
190       <KEYWORD1>rename</KEYWORD1>
191       <KEYWORD1>info</KEYWORD1>
192       <!-- expr keywords-->
193       <KEYWORD1>ceil</KEYWORD1>
194       <KEYWORD1>floor</KEYWORD1>
195       <KEYWORD1>round</KEYWORD1>
196       <KEYWORD1>incr</KEYWORD1>
197       <KEYWORD1>abs</KEYWORD1>
198       <KEYWORD1>acos</KEYWORD1>
199       <KEYWORD1>cos</KEYWORD1>
200       <KEYWORD1>cosh</KEYWORD1>
201       <KEYWORD1>asin</KEYWORD1>
202       <KEYWORD1>sin</KEYWORD1>
203       <KEYWORD1>sinh</KEYWORD1>
204       <KEYWORD1>atan</KEYWORD1>
205       <KEYWORD1>atan2</KEYWORD1>
206       <KEYWORD1>tan</KEYWORD1>
207       <KEYWORD1>tanh</KEYWORD1>
208       <KEYWORD1>log</KEYWORD1>
209       <KEYWORD1>log10</KEYWORD1>
210       <KEYWORD1>fmod</KEYWORD1>
211       <KEYWORD1>pow</KEYWORD1>
212       <KEYWORD1>hypot</KEYWORD1>
213       <KEYWORD1>sqrt</KEYWORD1>
214       <KEYWORD1>double</KEYWORD1>
215       <KEYWORD1>int</KEYWORD1>
216       <!-- New Tcl keywords up to tcl 8.4.14 -->
217       <KEYWORD1>bgerror</KEYWORD1>
218       <KEYWORD1>binary</KEYWORD1>
219       <KEYWORD1>clock</KEYWORD1>
220       <KEYWORD1>dde</KEYWORD1>
221       <KEYWORD1>encoding</KEYWORD1>
222       <KEYWORD1>fblocked</KEYWORD1>
223       <KEYWORD1>fconfigure</KEYWORD1>
224       <KEYWORD1>fcopy</KEYWORD1>
225       <KEYWORD1>fileevent</KEYWORD1>
226       <KEYWORD1>filename</KEYWORD1>
227       <KEYWORD1>http</KEYWORD1>
228       <KEYWORD1>interp</KEYWORD1>
229       <KEYWORD1>load</KEYWORD1>
230       <KEYWORD1>lset</KEYWORD1>
231       <KEYWORD1>memory</KEYWORD1>
232       <KEYWORD1>msgcat</KEYWORD1>
233       <KEYWORD1>namespace</KEYWORD1>
234       <KEYWORD1>package</KEYWORD1>
235       <KEYWORD1>pkg::create</KEYWORD1>
236       <KEYWORD1>pkg_mkIndex</KEYWORD1>
237       <KEYWORD1>registry</KEYWORD1>
238       <KEYWORD1>resource</KEYWORD1>
239       <KEYWORD1>socket</KEYWORD1>
240       <KEYWORD1>subst</KEYWORD1>
241       <KEYWORD1>update</KEYWORD1>
242       <KEYWORD1>variable</KEYWORD1>
243       <KEYWORD1>vwait</KEYWORD1>
244       <!-- Standard library of Tcl interpretor procedures -->
245       <KEYWORD1>auto_execok</KEYWORD1>
246       <KEYWORD1>auto_import</KEYWORD1>
247       <KEYWORD1>auto_load</KEYWORD1>
248       <KEYWORD1>auto_mkindex</KEYWORD1>
249       <KEYWORD1>auto_mkindex_old</KEYWORD1>
250       <KEYWORD1>auto_qualify</KEYWORD1>
251       <KEYWORD1>auto_reset</KEYWORD1>
252       <KEYWORD1>parray</KEYWORD1>
253       <KEYWORD1>tcl_endOfWord</KEYWORD1>
254       <KEYWORD1>tcl_findLibrary</KEYWORD1>
255       <KEYWORD1>tcl_startOfNextWord</KEYWORD1>
256       <KEYWORD1>tcl_startOfPreviousWord</KEYWORD1>
257       <KEYWORD1>tcl_wordBreakAfter</KEYWORD1>
258       <KEYWORD1>tcl_wordBreakBefore</KEYWORD1>
259
260       <!-- Tk keywords -->
261       <KEYWORD2>bind</KEYWORD2>
262       <KEYWORD2>button</KEYWORD2>
263       <KEYWORD2>canvas</KEYWORD2>
264       <KEYWORD2>checkbutton</KEYWORD2>
265       <KEYWORD2>destroy</KEYWORD2>
266       <KEYWORD2>entry</KEYWORD2>
267       <KEYWORD2>focus</KEYWORD2>
268       <KEYWORD2>frame</KEYWORD2>
269       <KEYWORD2>grab</KEYWORD2>
270       <KEYWORD2>image</KEYWORD2>
271       <KEYWORD2>label</KEYWORD2>
272       <KEYWORD2>listbox</KEYWORD2>
273       <KEYWORD2>lower</KEYWORD2>
274       <KEYWORD2>menu</KEYWORD2>
275       <KEYWORD2>menubutton</KEYWORD2>
276       <KEYWORD2>message</KEYWORD2>
277       <KEYWORD2>option</KEYWORD2>
278       <KEYWORD2>pack</KEYWORD2>
279       <KEYWORD2>placer</KEYWORD2>
280       <KEYWORD2>radiobutton</KEYWORD2>
281       <KEYWORD2>raise</KEYWORD2>
282       <KEYWORD2>scale</KEYWORD2>
283       <KEYWORD2>scrollbar</KEYWORD2>
284       <KEYWORD2>selection</KEYWORD2>
285       <KEYWORD2>send</KEYWORD2>
286       <KEYWORD2>text</KEYWORD2>
287       <KEYWORD2>tk</KEYWORD2>
288       <KEYWORD2>tkerror</KEYWORD2>
289       <KEYWORD2>tkwait</KEYWORD2>
290       <KEYWORD2>toplevel</KEYWORD2>
291       <KEYWORD2>update</KEYWORD2>
292       <KEYWORD2>winfo</KEYWORD2>
293       <KEYWORD2>wm</KEYWORD2>
294
295       <!-- Expect keywords. Using KEYWORD2 as send is already one -->
296       <!-- KEYWORD2 close -->
297       <KEYWORD2>debug</KEYWORD2>
298       <KEYWORD2>disconnect</KEYWORD2>
299       <!-- KEYWORD2 exit -->
300       <KEYWORD2>exp_continue</KEYWORD2>
301       <KEYWORD2>exp_internal</KEYWORD2>
302       <KEYWORD2>exp_open</KEYWORD2>
303       <KEYWORD2>exp_pid</KEYWORD2>
304       <KEYWORD2>exp_version</KEYWORD2>
305       <KEYWORD2>expect</KEYWORD2>
306       <KEYWORD2>expect_after</KEYWORD2>
307       <KEYWORD2>expect_background</KEYWORD2>
308       <KEYWORD2>expect_before</KEYWORD2>
309       <KEYWORD2>expect_tty</KEYWORD2>
310       <KEYWORD2>expect_user</KEYWORD2>
311       <KEYWORD2>fork</KEYWORD2>
312       <KEYWORD2>inter_return</KEYWORD2>
313       <KEYWORD2>interact</KEYWORD2>
314       <KEYWORD2>interpreter</KEYWORD2>
315       <KEYWORD2>log_file</KEYWORD2>
316       <KEYWORD2>log_user</KEYWORD2>
317       <KEYWORD2>match_max</KEYWORD2>
318       <KEYWORD2>overlay</KEYWORD2>
319       <KEYWORD2>parity</KEYWORD2>
320       <KEYWORD2>promptl</KEYWORD2>
321       <KEYWORD2>prompt2</KEYWORD2>
322       <KEYWORD2>remove_nulls</KEYWORD2>
323       <!-- KEYWORD2 send -->
324       <KEYWORD2>send_error </KEYWORD2>
325       <KEYWORD2>send_log</KEYWORD2>
326       <KEYWORD2>send_tty</KEYWORD2>
327       <KEYWORD2>send_user</KEYWORD2>
328       <KEYWORD2>sleep</KEYWORD2>
329       <KEYWORD2>spawn</KEYWORD2>
330       <KEYWORD2>strace</KEYWORD2>
331       <KEYWORD2>stty</KEYWORD2>
332       <KEYWORD2>system</KEYWORD2>
333       <KEYWORD2>timestamp</KEYWORD2>
334       <KEYWORD2>trap</KEYWORD2>
335       <KEYWORD2>wait</KEYWORD2>
336       <!-- Arguments to expect commands-->
337       <KEYWORD3>full_buffer</KEYWORD3>
338       <KEYWORD3>timeout</KEYWORD3>
339       <!-- KEYWORD3 eof-->
340
341       <!-- Global variables-->
342       <KEYWORD3>argv0</KEYWORD3>
343       <KEYWORD3>argv</KEYWORD3>
344       <KEYWORD3>argc</KEYWORD3>
345       <KEYWORD3>tk_version</KEYWORD3>
346       <KEYWORD3>tk_library</KEYWORD3>
347       <KEYWORD3>tk_strictMotif</KEYWORD3>
348       <!-- New global variables up to tcl 8.4.14 -->
349       <KEYWORD3>env</KEYWORD3>
350       <KEYWORD3>errorCode</KEYWORD3>
351       <KEYWORD3>errorInfo</KEYWORD3>
352       <KEYWORD3>geometry</KEYWORD3>
353       <KEYWORD3>tcl_library</KEYWORD3>
354       <KEYWORD3>tcl_patchLevel</KEYWORD3>
355       <KEYWORD3>tcl_pkgPath</KEYWORD3>
356       <KEYWORD3>tcl_platform</KEYWORD3>
357       <KEYWORD3>tcl_precision</KEYWORD3>
358       <KEYWORD3>tcl_rcFileName</KEYWORD3>
359       <KEYWORD3>tcl_rcRsrcName</KEYWORD3>
360       <KEYWORD3>tcl_traceCompile</KEYWORD3>
361       <KEYWORD3>tcl_traceExec</KEYWORD3>
362       <KEYWORD3>tcl_wordchars</KEYWORD3>
363       <KEYWORD3>tcl_nonwordchars</KEYWORD3>
364       <KEYWORD3>tcl_version</KEYWORD3>
365       <KEYWORD3>tcl_interactive</KEYWORD3>
366
367       <!-- Common arguments to tcl and Tk keywords -->
368       <KEYWORD3>exact</KEYWORD3>
369       <KEYWORD3>all</KEYWORD3>
370       <KEYWORD3>indices</KEYWORD3>
371       <KEYWORD3>nocase</KEYWORD3>
372       <KEYWORD3>nocomplain</KEYWORD3>
373       <KEYWORD3>nonewline</KEYWORD3>
374       <KEYWORD3>code</KEYWORD3>
375       <KEYWORD3>errorinfo</KEYWORD3>
376       <KEYWORD3>errorcode</KEYWORD3>
377       <KEYWORD3>atime</KEYWORD3>
378       <KEYWORD3>anymore</KEYWORD3>
379       <KEYWORD3>args</KEYWORD3>
380       <KEYWORD3>body</KEYWORD3>
381       <KEYWORD3>compare</KEYWORD3>
382       <KEYWORD3>cmdcount</KEYWORD3>
383       <KEYWORD3>commands</KEYWORD3>
384       <KEYWORD3>ctime</KEYWORD3>
385       <KEYWORD3>current</KEYWORD3>
386       <KEYWORD3>default</KEYWORD3>
387       <KEYWORD3>dev</KEYWORD3>
388       <KEYWORD3>dirname</KEYWORD3>
389       <KEYWORD3>donesearch</KEYWORD3>
390       <KEYWORD3>errorinfo</KEYWORD3>
391       <KEYWORD3>executable</KEYWORD3>
392       <KEYWORD3>extension</KEYWORD3>
393       <KEYWORD3>first</KEYWORD3>
394       <KEYWORD3>globals</KEYWORD3>
395       <KEYWORD3>gid</KEYWORD3>
396       <KEYWORD3>index</KEYWORD3>
397       <KEYWORD3>ino</KEYWORD3>
398       <KEYWORD3>isdirectory</KEYWORD3>
399       <KEYWORD3>isfile</KEYWORD3>
400       <KEYWORD3>keep</KEYWORD3>
401       <KEYWORD3>last</KEYWORD3>
402       <KEYWORD3>level</KEYWORD3>
403       <KEYWORD3>length</KEYWORD3>
404       <KEYWORD3>library</KEYWORD3>
405       <KEYWORD3>locals</KEYWORD3>
406       <KEYWORD3>lstat</KEYWORD3>
407       <KEYWORD3>match</KEYWORD3>
408       <KEYWORD3>mode</KEYWORD3>
409       <KEYWORD3>mtime</KEYWORD3>
410       <KEYWORD3>names</KEYWORD3>
411       <KEYWORD3>nextelement</KEYWORD3>
412       <KEYWORD3>nextid</KEYWORD3>
413       <KEYWORD3>nlink</KEYWORD3>
414       <KEYWORD3>none</KEYWORD3>
415       <KEYWORD3>procs</KEYWORD3>
416       <KEYWORD3>owned</KEYWORD3>
417       <KEYWORD3>range</KEYWORD3>
418       <KEYWORD3>readable</KEYWORD3>
419       <KEYWORD3>readlink</KEYWORD3>
420       <KEYWORD3>redo</KEYWORD3>
421       <KEYWORD3>release</KEYWORD3>
422       <KEYWORD3>rootname</KEYWORD3>
423       <KEYWORD3>script</KEYWORD3>
424       <KEYWORD3>show</KEYWORD3>
425       <KEYWORD3>size</KEYWORD3>
426       <KEYWORD3>startsearch</KEYWORD3>
427       <KEYWORD3>stat</KEYWORD3>
428       <KEYWORD3>status</KEYWORD3>
429       <KEYWORD3>substitute</KEYWORD3>
430       <KEYWORD3>tail</KEYWORD3>
431       <KEYWORD3>tclversion</KEYWORD3>
432       <KEYWORD3>tolower</KEYWORD3>
433       <KEYWORD3>toupper</KEYWORD3>
434       <KEYWORD3>trim</KEYWORD3>
435       <KEYWORD3>trimleft</KEYWORD3>
436       <KEYWORD3>trimright</KEYWORD3>
437       <KEYWORD3>type</KEYWORD3>
438       <KEYWORD3>uid</KEYWORD3>
439       <KEYWORD3>variable</KEYWORD3>
440       <KEYWORD3>vars</KEYWORD3>
441       <KEYWORD3>vdelete</KEYWORD3>
442       <KEYWORD3>vinfo</KEYWORD3>
443       <KEYWORD3>visibility</KEYWORD3>
444       <KEYWORD3>window</KEYWORD3>
445       <KEYWORD3>writable</KEYWORD3>
446       <KEYWORD3>accelerator</KEYWORD3>
447       <KEYWORD3>activeforeground</KEYWORD3>
448       <KEYWORD3>activebackground</KEYWORD3>
449       <KEYWORD3>anchor</KEYWORD3>
450       <KEYWORD3>aspect</KEYWORD3>
451       <KEYWORD3>background</KEYWORD3>
452       <KEYWORD3>before</KEYWORD3>
453       <KEYWORD3>bg</KEYWORD3>
454       <KEYWORD3>borderwidth</KEYWORD3>
455       <KEYWORD3>bd</KEYWORD3>
456       <KEYWORD3>bitmap</KEYWORD3>
457       <KEYWORD3>command</KEYWORD3>
458       <KEYWORD3>cursor</KEYWORD3>
459       <KEYWORD3>default</KEYWORD3>
460       <KEYWORD3>expand</KEYWORD3>
461       <KEYWORD3>family</KEYWORD3>
462       <KEYWORD3>fg</KEYWORD3>
463       <KEYWORD3>fill</KEYWORD3>
464       <KEYWORD3>font</KEYWORD3>
465       <KEYWORD3>force</KEYWORD3>
466       <KEYWORD3>foreground</KEYWORD3>
467       <KEYWORD3>from</KEYWORD3>
468       <KEYWORD3>height</KEYWORD3>
469       <KEYWORD3>icon</KEYWORD3>
470       <KEYWORD3>question</KEYWORD3>
471       <KEYWORD3>warning</KEYWORD3>
472       <KEYWORD3>in</KEYWORD3>
473       <KEYWORD3>ipadx</KEYWORD3>
474       <KEYWORD3>ipady</KEYWORD3>
475       <KEYWORD3>justify</KEYWORD3>
476       <KEYWORD3>left</KEYWORD3>
477       <KEYWORD3>center</KEYWORD3>
478       <KEYWORD3>right</KEYWORD3>
479       <KEYWORD3>length</KEYWORD3>
480       <KEYWORD3>padx</KEYWORD3>
481       <KEYWORD3>pady</KEYWORD3>
482       <KEYWORD3>offvalue</KEYWORD3>
483       <KEYWORD3>onvalue</KEYWORD3>
484       <KEYWORD3>orient</KEYWORD3>
485       <KEYWORD3>horizontal</KEYWORD3>
486       <KEYWORD3>vertical</KEYWORD3>
487       <KEYWORD3>outline</KEYWORD3>
488       <KEYWORD3>oversrike</KEYWORD3>
489       <KEYWORD3>relief</KEYWORD3>
490       <KEYWORD3>raised</KEYWORD3>
491       <KEYWORD3>sunken</KEYWORD3>
492       <KEYWORD3>flat</KEYWORD3>
493       <KEYWORD3>groove</KEYWORD3>
494       <KEYWORD3>ridge</KEYWORD3>
495       <KEYWORD3>solid</KEYWORD3>
496       <KEYWORD3>screen</KEYWORD3>
497       <KEYWORD3>selectbackground</KEYWORD3>
498       <KEYWORD3>selectforeground</KEYWORD3>
499       <KEYWORD3>setgrid</KEYWORD3>
500       <KEYWORD3>side</KEYWORD3>
501       <KEYWORD3>size</KEYWORD3>
502       <KEYWORD3>slant</KEYWORD3>
503       <KEYWORD3>left</KEYWORD3>
504       <KEYWORD3>right</KEYWORD3>
505       <KEYWORD3>top</KEYWORD3>
506       <KEYWORD3>bottom</KEYWORD3>
507       <KEYWORD3>spacing1</KEYWORD3>
508       <KEYWORD3>spacing2</KEYWORD3>
509       <KEYWORD3>spacing3</KEYWORD3>
510       <KEYWORD3>state</KEYWORD3>
511       <KEYWORD3>stipple</KEYWORD3>
512       <KEYWORD3>takefocus</KEYWORD3>
513       <KEYWORD3>tearoff</KEYWORD3>
514       <KEYWORD3>textvariable</KEYWORD3>
515       <KEYWORD3>title</KEYWORD3>
516       <KEYWORD3>to</KEYWORD3>
517       <KEYWORD3>type</KEYWORD3>
518       <KEYWORD3>abortretryignore</KEYWORD3>
519       <KEYWORD3>ok</KEYWORD3>
520       <KEYWORD3>okcancel</KEYWORD3>
521       <KEYWORD3>retrycancel</KEYWORD3>
522       <KEYWORD3>yesno</KEYWORD3>
523       <KEYWORD3>yesnocancel</KEYWORD3>
524       <KEYWORD3>underline</KEYWORD3>
525       <KEYWORD3>value</KEYWORD3>
526       <KEYWORD3>variable</KEYWORD3>
527       <KEYWORD3>weight</KEYWORD3>
528       <KEYWORD3>width</KEYWORD3>
529       <KEYWORD3>xscrollcommand</KEYWORD3>
530       <KEYWORD3>yscrollcommand</KEYWORD3>
531       <KEYWORD3>active</KEYWORD3>
532       <KEYWORD3>add</KEYWORD3>
533       <KEYWORD3>arc</KEYWORD3>
534       <KEYWORD3>aspect</KEYWORD3>
535       <KEYWORD3>bitmap</KEYWORD3>
536       <KEYWORD3>cascade</KEYWORD3>
537       <KEYWORD3>cget</KEYWORD3>
538       <KEYWORD3>children</KEYWORD3>
539       <KEYWORD3>class</KEYWORD3>
540       <KEYWORD3>clear</KEYWORD3>
541       <KEYWORD3>client</KEYWORD3>
542       <KEYWORD3>create</KEYWORD3>
543       <KEYWORD3>colormodel</KEYWORD3>
544       <KEYWORD3>command</KEYWORD3>
545       <KEYWORD3>configure</KEYWORD3>
546       <KEYWORD3>deiconify</KEYWORD3>
547       <KEYWORD3>delete</KEYWORD3>
548       <KEYWORD3>disabled</KEYWORD3>
549       <KEYWORD3>exists</KEYWORD3>
550       <KEYWORD3>focusmodel</KEYWORD3>
551       <KEYWORD3>flash</KEYWORD3>
552       <KEYWORD3>forget</KEYWORD3>
553       <KEYWORD3>geometry</KEYWORD3>
554       <KEYWORD3>get</KEYWORD3>
555       <KEYWORD3>group</KEYWORD3>
556       <KEYWORD3>handle</KEYWORD3>
557       <KEYWORD3>iconbitmap</KEYWORD3>
558       <KEYWORD3>iconify</KEYWORD3>
559       <KEYWORD3>iconmask</KEYWORD3>
560       <KEYWORD3>iconname</KEYWORD3>
561       <KEYWORD3>iconposition</KEYWORD3>
562       <KEYWORD3>iconwindow</KEYWORD3>
563       <KEYWORD3>idletasks</KEYWORD3>
564       <KEYWORD3>insert</KEYWORD3>
565       <KEYWORD3>interps</KEYWORD3>
566       <KEYWORD3>itemconfigure</KEYWORD3>
567       <KEYWORD3>invoke</KEYWORD3>
568       <KEYWORD3>line</KEYWORD3>
569       <KEYWORD3>mark</KEYWORD3>
570       <KEYWORD3>maxsize</KEYWORD3>
571       <KEYWORD3>minsize</KEYWORD3>
572       <KEYWORD3>move</KEYWORD3>
573       <KEYWORD3>name</KEYWORD3>
574       <KEYWORD3>normal</KEYWORD3>
575       <KEYWORD3>overrideredirect</KEYWORD3>
576       <KEYWORD3>oval</KEYWORD3>
577       <KEYWORD3>own</KEYWORD3>
578       <KEYWORD3>photo</KEYWORD3>
579       <KEYWORD3>polygon</KEYWORD3>
580       <KEYWORD3>positionfrom</KEYWORD3>
581       <KEYWORD3>propagate</KEYWORD3>
582       <KEYWORD3>protocol</KEYWORD3>
583       <KEYWORD3>ranges</KEYWORD3>
584       <KEYWORD3>rectangle</KEYWORD3>
585       <KEYWORD3>remove</KEYWORD3>
586       <KEYWORD3>resizable</KEYWORD3>
587       <KEYWORD3>separator</KEYWORD3>
588       <KEYWORD3>slaves</KEYWORD3>
589       <KEYWORD3>sizefrom</KEYWORD3>
590       <KEYWORD3>state</KEYWORD3>
591       <KEYWORD3>tag</KEYWORD3>
592       <KEYWORD3>title</KEYWORD3>
593       <KEYWORD3>transient</KEYWORD3>
594       <KEYWORD3>window</KEYWORD3>
595       <KEYWORD3>withdraw</KEYWORD3>
596       <KEYWORD3>xview</KEYWORD3>
597       <KEYWORD3>yview</KEYWORD3>
598       <KEYWORD3>Activate</KEYWORD3>
599       <KEYWORD3>Alt</KEYWORD3>
600       <KEYWORD3>Any</KEYWORD3>
601       <KEYWORD3>B1</KEYWORD3>
602       <KEYWORD3>B2</KEYWORD3>
603       <KEYWORD3>B3</KEYWORD3>
604       <KEYWORD3>Button1</KEYWORD3>
605       <KEYWORD3>Button2</KEYWORD3>
606       <KEYWORD3>Button3</KEYWORD3>
607       <KEYWORD3>ButtonPress</KEYWORD3>
608       <KEYWORD3>ButtonRelease</KEYWORD3>
609       <KEYWORD3>Double</KEYWORD3>
610       <KEYWORD3>Circulate</KEYWORD3>
611       <KEYWORD3>Colormap</KEYWORD3>
612       <KEYWORD3>Configure</KEYWORD3>
613       <KEYWORD3>Control</KEYWORD3>
614       <KEYWORD3>Deactivate</KEYWORD3>
615       <KEYWORD3>Escape</KEYWORD3>
616       <KEYWORD3>Expose</KEYWORD3>
617       <KEYWORD3>FocusIn</KEYWORD3>
618       <KEYWORD3>FocusOut</KEYWORD3>
619       <KEYWORD3>Gravity</KEYWORD3>
620       <KEYWORD3>Key</KEYWORD3>
621       <KEYWORD3>KeyPress</KEYWORD3>
622       <KEYWORD3>KeyRelease</KEYWORD3>
623       <KEYWORD3>Lock</KEYWORD3>
624       <KEYWORD3>Meta</KEYWORD3>
625       <KEYWORD3>Property</KEYWORD3>
626       <KEYWORD3>Reparent</KEYWORD3>
627       <KEYWORD3>Shift</KEYWORD3>
628       <KEYWORD3>Unmap</KEYWORD3>
629       <KEYWORD3>Visibility</KEYWORD3>
630       <KEYWORD3>Button</KEYWORD3>
631       <KEYWORD3>ButtonPress</KEYWORD3>
632       <KEYWORD3>ButtonRelease</KEYWORD3>
633       <KEYWORD3>Destroy</KEYWORD3>
634       <KEYWORD3>Escape</KEYWORD3>
635       <KEYWORD3>Enter</KEYWORD3>
636       <KEYWORD3>Leave</KEYWORD3>
637       <KEYWORD3>Motion</KEYWORD3>
638       <KEYWORD3>MenuSelect</KEYWORD3>
639       <KEYWORD3>Triple</KEYWORD3>
640       <KEYWORD3>all</KEYWORD3>
641     </KEYWORDS>
642   </RULES>
643
644   <RULES SET="TCL_COMMENT" DEFAULT="OPERATOR">
645     <!-- Allows catching blocks starting with a comment.
646         or comments following a ; -->
647     <SEQ_REGEXP TYPE="COMMENT1" HASH_CHAR="#" DELEGATE="MAIN">#.*</SEQ_REGEXP>
648   </RULES>
649
650   <RULES SET="TCL_STRING" DEFAULT="LITERAL1" ESCAPE="\">
651     <PROPS>
652       <PROPERTY NAME="indentOpenBrackets" VALUE="" />
653       <PROPERTY NAME="indentCloseBrackets" VALUE="" />
654     </PROPS>
655
656     <!-- Continuation line. Processed before anything else by Tcl.-->
657     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
658
659     <!-- Avoid colouring variables substituted inside strings -->
660     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
661       <BEGIN>\$(\w|::)+\(</BEGIN>
662       <END>)</END>
663     </SPAN_REGEXP>
664     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
665       <BEGIN>\$\{</BEGIN>
666       <END>}</END>
667     </SPAN_REGEXP>
668     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
669
670     <!-- Sub-commands to be substituted -->
671     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
672       <BEGIN>[</BEGIN>
673       <END>]</END>
674     </SPAN>
675
676     <!-- Escaped characters -->
677     <SEQ TYPE="KEYWORD3">\a</SEQ>
678     <SEQ TYPE="KEYWORD3">\b</SEQ>
679     <SEQ TYPE="KEYWORD3">\f</SEQ>
680     <SEQ TYPE="KEYWORD3">\n</SEQ>
681     <SEQ TYPE="KEYWORD3">\r</SEQ>
682     <SEQ TYPE="KEYWORD3">\t</SEQ>
683     <SEQ TYPE="KEYWORD3">\v</SEQ>
684   </RULES>
685 </MODE>