Mercurial > emacs
changeset 72316:cedc7e7f2199
(sh-quoted-subshell): Make sure we don't mistake a closing " for an opening one.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 08 Aug 2006 15:09:26 +0000 |
parents | 95367ca0bf96 |
children | 5e59478af974 |
files | lisp/ChangeLog lisp/progmodes/sh-script.el |
diffstat | 2 files changed, 16 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Aug 08 09:34:56 2006 +0000 +++ b/lisp/ChangeLog Tue Aug 08 15:09:26 2006 +0000 @@ -1,11 +1,17 @@ +2006-08-08 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't + mistake a closing " for an opening one. + 2006-08-07 Dan Nicolaescu <dann@ics.uci.edu> * term/xterm.el (terminal-init-xterm): Add more key bindings. 2006-08-07 Stefan Monnier <monnier@iro.umontreal.ca> - * complete.el (PC-do-completion): Strip out completion-ignored-extensions - before checking whether there are multiple completions. + * complete.el (PC-do-completion): Filter out completions matching + completion-ignored-extensions before checking whether there are + multiple completions. Don't use `list' unnecessarily when building completion tables. 2006-08-06 Richard Stallman <rms@gnu.org>
--- a/lisp/progmodes/sh-script.el Tue Aug 08 09:34:56 2006 +0000 +++ b/lisp/progmodes/sh-script.el Tue Aug 08 15:09:26 2006 +0000 @@ -986,7 +986,9 @@ ;; FIXME: This can (and often does) match multiple lines, yet it makes no ;; effort to handle multiline cases correctly, so it ends up being ;; rather flakey. - (when (re-search-forward "\"\\(?:\\(?:.\\|\n\\)*?[^\\]\\(?:\\\\\\\\\\)*\\)??\\(\\$(\\|`\\)" limit t) + (when (and (re-search-forward "\"\\(?:\\(?:.\\|\n\\)*?[^\\]\\(?:\\\\\\\\\\)*\\)??\\(\\$(\\|`\\)" limit t) + ;; Make sure the " we matched is an opening quote. + (eq ?\" (nth 3 (syntax-ppss)))) ;; bingo we have a $( or a ` inside a "" (let ((char (char-after (point))) (continue t) @@ -1081,9 +1083,6 @@ ("\\(\\\\\\)'" 1 ,sh-st-punc) ;; Make sure $@ and @? are correctly recognized as sexps. ("\\$\\([?@]\\)" 1 ,sh-st-symbol) - ;; highlight (possibly nested) subshells inside "" quoted regions correctly. - (sh-quoted-subshell - (1 (sh-apply-quoted-subshell) t t)) ;; Find HEREDOC starters and add a corresponding rule for the ender. (sh-font-lock-here-doc (2 (sh-font-lock-open-heredoc @@ -1093,7 +1092,11 @@ (and (match-beginning 3) (/= (match-beginning 3) (match-end 3)))) nil t)) ;; Distinguish the special close-paren in `case'. - (")" 0 (sh-font-lock-paren (match-beginning 0))))) + (")" 0 (sh-font-lock-paren (match-beginning 0))) + ;; highlight (possibly nested) subshells inside "" quoted regions correctly. + ;; This should be at the very end because it uses syntax-ppss. + (sh-quoted-subshell + (1 (sh-apply-quoted-subshell) t t)))) (defun sh-font-lock-syntactic-face-function (state) (let ((q (nth 3 state)))