state zsh extends HighlightEntry
{
/#/ {
comment_face (true);
language_print ($0);
call (eat_one_line);
comment_face (false);
}
/\"/ {
string_face (true);
language_print ($0);
call (c_string);
string_face (false);
}
/^#!/ {
reference_face (true);
language_print ($0);
call (eat_one_line);
reference_face (false);
}
/\b(:|a(lias|utoload)|b(g|indkey|reak|uiltin|ye)\
|c(ase|d|hdir|o(m(mand|pctl)|ntinue|proc))\
|d(eclare|i(rs|s(able|own))|o(|ne))\
|e(cho(|tc)|l(if|se)|mulate|n(abke|d)|sac|val|x(ec()|it|port))\
|f(alse|c|g|i|or(|each)|unction(|s))|get(ln|opts)|h(ash|istory)\
|i(f|n(|teger))|jobs|kill|l(et|imit|o(cal|g(|out)))|no(correct|glob)\
|p(opd|rint|ush(d|ln)|wd)|re(ad(|only)|hash|peat|turn())\
|s(ched|e(lect|t(|opt))|hift|ource|uspend)\
|t(est|hen|ime(|s)|rap|tyctl|ype(|set))\
|u(limit|mask|n(alias|function|hash|limit|set(|opt)|til))|vared\
|w(ait|h(e(nce|re)|i(ch|le))))\b/ {
keyword_face (true);
language_print ($0);
keyword_face (false);
}
/\b(argv|c(dpath|hpwd)|f(ignore|path)|histchars|ma(ilpath|npath)\
|p(ath|eriodic|r(ecmd|ompt)|svar)|s(ignals|tatus)|watch)\b/ {
builtin_face (true);
language_print ($0);
builtin_face (false);
}
}