state tcl_comment extends Highlight
{
/[^\\\\]\n/ {
language_print ($0);
return;
}
}
state tcl_proc_arglist extends Highlight
{
/{/ {
language_print ($0);
variable_name_face (true);
str = match_balanced_block (/{/, /}/);
variable_name_face (false);
language_print (str);
return;
}
/[A-Za-z0-9]+/ {
variable_name_face (true);
language_print ($0);
variable_name_face (false);
return;
}
/[.\n]/ {
language_print ($0);
return;
}
}
state tcl extends HighlightEntry
{
/#/ {
comment_face (true);
language_print ($0);
call (tcl_comment);
comment_face (false);
}
/#\n/ {
comment_face (true);
language_print ($0);
comment_face (false);
}
/\"/ {
string_face (true);
language_print ($0);
call (c_string);
string_face (false);
}
/\b(proc)([ \t]+)([A-Za-z_0-9]+)([ \t]+)/ {
keyword_face (true);
language_print ($1);
keyword_face (false);
language_print ($2);
function_name_face (true);
language_print ($3);
function_name_face (false);
language_print ($4);
call (tcl_proc_arglist);
}
/(\$)([A-Za-z_0-9]+)/ {
language_print ($1);
variable_name_face (true);
language_print ($2);
variable_name_face (false);
}
/\${/ {
language_print ($0);
variable_name_face (true);
str = match_balanced_block (/{/, /}/);
variable_name_face (false);
language_print (str);
}
/\b(Http|Tcl|a(fter|ppend|rray)\
|b(ell|gerror|i(nd(|tags)|tmap)|reak|utton)\
|c(a(nvas|se|tch)|d|heckbutton|l(ipboard|ock)|on(cat|tinue))|destroy\
|e(ntry|of|rror|v(al|ent)|x(ec|it|pr))\
|f(blocked|configure|ile(|event|name)|lush|o(cus|nt|r(|each|mat))|rame)\
|g(ets|lob(|al)|r(ab|id))|history|i(f|mage|n(cr|fo|terp))|join\
|l(a(bel|ppend)|i(brary|n(dex|sert)|st(|box))|length|o(ad|se|wer)\
|r(ange|eplace)|s(earch|ort))\
|me(nu(|button)|ssage)|op(en|tion(|s))\
|p(ack(|age)|hoto|id|kg_mkIndex|lace|roc|uts|wd)\
|r(a(diobutton|ise)|e(ad|g(exp|sub)|name|turn))\
|s(c(a(le|n)|rollbar)|e(ek|lection|nd|t)|o(cket|urce)|plit|tring|ubst\
|witch)\
|t(clvars|e(ll|xt)|ime\
|k(\
|_(bi(ndForTraversal|sque)|chooseColor|dialog\
|focus(FollowsMouse|Next|Prev)|get(OpenFile|SaveFile)\
|me(nuBar|ssageBox)|optionMenu|popup|setPalette)\
|error|vars|wait)\
|oplevel|race)\
|u(n(known|set)|p(date|level|var))|vwait|w(hile|info|m))\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
}