Index: sh.st =================================================================== --- states/hl/sh.st (revision 1) +++ states/hl/sh.st (revision 3) @@ -2,8 +2,21 @@ * Name: sh * Description: Bourne shell programming language. * Author: Juergen Kahrs + * Josh Zenker */ +state sh_string extends Highlight +{ + /\\\\./ { + language_print ($0); + } + + sh_string_end { + language_print ($0); + return; + } +} + state sh extends HighlightEntry { /* Comments. */ @@ -14,11 +27,25 @@ comment_face (false); } + /* Ignore escaped quotation marks */ + /\\\"/ { + language_print ($0); + } + + /\\\'/ { + language_print ($0); + } + + /\\\`/ { + language_print ($0); + } + /* String constants. */ - /\"/ { + /\"|'/ { + sh_string_end = regexp($0); string_face (true); language_print ($0); - call (c_string); + call (sh_string); string_face (false); } @@ -32,7 +59,7 @@ /* Keywords. */ /\b(CDPATH|HOME|IFS|MAIL((CHECK)?|(PATH)?)|P(ATH|S(1|2))|SH(ACCT|ELL)|\ -break|c(ase|d|ontinue)|do(ne)?|e(cho|lse|sac|val|x(ec|it|port))|f(i|or)|\ +break|c(ase|d|ontinue)|do(ne)?|e(cho|l(if|se)|sac|val|x(ec|it|port))|f(i|or)|\ getopts|hash|i[fn]|limit|newgrp|pwd|re(ad(only)?|turn)|s(et|hift)|\ t(est|hen|imes|rap|ype)|u(limit|mask|n(limit|set))|w(ait|hile))\b/ { keyword_face (true);