Commit e6769f18 authored by Stefan Monnier's avatar Stefan Monnier

* lisp/progmodes/sh-script.el (sh-font-lock-quoted-subshell): Try to better

handle multiline elements.

Fixes: debbugs:18380
parent da25527e
2014-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-font-lock-quoted-subshell): Try to better
handle multiline elements (bug#18380).
2014-09-01 Eli Zaretskii <eliz@gnu.org>
* ls-lisp.el (ls-lisp-use-string-collate)
......@@ -7,8 +12,7 @@
(ls-lisp-version-lessp): New function.
(ls-lisp-handle-switches): Use it to implement the -v switch of
GNU ls.
(ls-lisp--insert-directory): Mention the -v switch in the doc
string.
(ls-lisp--insert-directory): Mention the -v switch in the doc string.
2014-08-31 Christoph Scholtes <cschol2112@gmail.com>
......@@ -16,8 +20,8 @@
`quit-window' via `special-mode'.
(ibuffer-mode-map): Use keybindings from special-mode-map instead
of local overrides.
(ibuffer): Don't store previous windows configuration. Let
`quit-window' handle restoring.
(ibuffer): Don't store previous windows configuration.
Let `quit-window' handle restoring.
(ibuffer-quit): Remove function. Use `quit-window' instead.
(ibuffer-restore-window-config-on-quit): Remove variable.
(ibuffer-prev-window-config): Remove variable.
......
......@@ -1051,13 +1051,11 @@ Point is at the beginning of the next line."
"Search for a subshell embedded in a string.
Find all the unescaped \" characters within said subshell, remembering that
subshells can nest."
;; 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 flaky.
(when (eq ?\" (nth 3 (syntax-ppss))) ; Check we matched an opening quote.
;; bingo we have a $( or a ` inside a ""
(let (;; `state' can be: double-quote, backquote, code.
(state (if (eq (char-before) ?`) 'backquote 'code))
(startpos (point))
;; Stacked states in the context.
(states '(double-quote)))
(while (and state (progn (skip-chars-forward "^'\\\\\"`$()" limit)
......@@ -1088,7 +1086,12 @@ subshells can nest."
(`double-quote nil)
(_ (setq state (pop states)))))
(_ (error "Internal error in sh-font-lock-quoted-subshell")))
(forward-char 1)))))
(forward-char 1))
(when (< startpos (line-beginning-position))
(put-text-property startpos (point) 'syntax-multiline t)
(add-hook 'syntax-propertize-extend-region-functions
'syntax-propertize-multiline nil t))
)))
(defun sh-is-quoted-p (pos)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment