]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/tcl.xml
4927f13bff1888db9fc8659d75d605e48853b201
[factor.git] / basis / xmode / modes / tcl.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \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
21     Limitations:\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
25     Known bugs:\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
34 \r
35 <MODE>\r
36         <PROPS>\r
37                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
38                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
39                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />\r
40         </PROPS>\r
41 \r
42         <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE" \r
43                 DIGIT_RE="0x\p{XDigit}+|\d+">\r
44 \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
47 \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
54                         <END>}</END>\r
55                 </SPAN_REGEXP>\r
56                 <!-- Comments on a line of their own. -->\r
57                 <EOL_SPAN TYPE="COMMENT1" AT_WHITESPACE_END="TRUE">#</EOL_SPAN>\r
58 \r
59                 <!-- Quoted strings -->\r
60                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="TCL_STRING">\r
61                         <BEGIN>"</BEGIN>\r
62                         <END>"</END>\r
63                 </SPAN>\r
64 \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
69                         <END>)</END>\r
70                 </SPAN_REGEXP>\r
71                 <!-- General scalar variable. Do not delegate, as the ${} block content is not evalutated by Tcl. -->\r
72                 <SPAN TYPE="NULL">\r
73                         <BEGIN>${</BEGIN>\r
74                         <END>}</END>\r
75                 </SPAN>\r
76                 <!-- Plain scalar variable. -->\r
77                 <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>\r
78 \r
79                 <!-- Sub-block -->\r
80                 <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="MAIN">\r
81                         <BEGIN>{</BEGIN>\r
82                         <END>}</END>\r
83                 </SPAN>\r
84 \r
85                 <!-- Sub-commands to be substituted -->\r
86                 <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">\r
87                         <BEGIN>[</BEGIN>\r
88                         <END>]</END>\r
89                 </SPAN>\r
90 \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
99 \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
105 \r
106                 <!-- Math expression operators -->\r
107                 <SEQ TYPE="OPERATOR">=</SEQ>\r
108                 <SEQ TYPE="OPERATOR">!</SEQ>\r
109                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
110                 <SEQ TYPE="OPERATOR">&lt;=</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">&gt;</SEQ>\r
116                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
117                 <SEQ TYPE="OPERATOR">%</SEQ>\r
118                 <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
119                 <SEQ TYPE="OPERATOR">|</SEQ>\r
120                 <SEQ TYPE="OPERATOR">^</SEQ>\r
121                 <SEQ TYPE="OPERATOR">~</SEQ>\r
122 \r
123                 <KEYWORDS>\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
256 \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
291 \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
337 \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
363 \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
638                 </KEYWORDS>\r
639         </RULES>\r
640 \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
645         </RULES>\r
646 \r
647         <RULES SET="TCL_STRING" DEFAULT="LITERAL1">\r
648                 <PROPS>\r
649                         <PROPERTY NAME="indentOpenBrackets" VALUE="" />\r
650                         <PROPERTY NAME="indentCloseBrackets" VALUE="" />\r
651                 </PROPS>\r
652 \r
653                 <!-- Continuation line. Processed before anything else by Tcl.-->\r
654                 <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>\r
655 \r
656                 <!-- Avoid colouring variables substituted inside strings -->\r
657                 <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">\r
658                         <BEGIN>\$(\w|::)+\(</BEGIN>\r
659                         <END>)</END>\r
660                 </SPAN_REGEXP>\r
661                 <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">\r
662                         <BEGIN>\$\{</BEGIN>\r
663                         <END>}</END>\r
664                 </SPAN_REGEXP>\r
665                 <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>\r
666 \r
667                 <!-- Sub-commands to be substituted -->\r
668                 <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">\r
669                         <BEGIN>[</BEGIN>\r
670                         <END>]</END>\r
671                 </SPAN>\r
672 \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
681         </RULES>\r
682 </MODE>\r