/jEdit/branches/4.4.x-merge-request-for-r19197/modes/tcl.xml

# · XML · 685 lines · 646 code · 6 blank · 33 comment · 0 complexity · 868c52fc5e1587ef79f11f3348dc0c60 MD5 · raw file

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