# HG changeset patch # User Stefan Monnier # Date 1155049766 0 # Node ID cedc7e7f2199d3f5b0a42b5a569b6d7cd0ab8730 # Parent 95367ca0bf96ab7ffaa752b623d07d4dad225a5d (sh-quoted-subshell): Make sure we don't mistake a closing " for an opening one. diff -r 95367ca0bf96 -r cedc7e7f2199 lisp/ChangeLog --- 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 + + * progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't + mistake a closing " for an opening one. + 2006-08-07 Dan Nicolaescu * term/xterm.el (terminal-init-xterm): Add more key bindings. 2006-08-07 Stefan Monnier - * 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 diff -r 95367ca0bf96 -r cedc7e7f2199 lisp/progmodes/sh-script.el --- 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)))