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