Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
e6769f18
Commit
e6769f18
authored
Sep 02, 2014
by
Stefan Monnier
Browse files
* lisp/progmodes/sh-script.el (sh-font-lock-quoted-subshell): Try to better
handle multiline elements. Fixes: debbugs:18380
parent
da25527e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
8 deletions
+15
-8
lisp/ChangeLog
lisp/ChangeLog
+8
-4
lisp/progmodes/sh-script.el
lisp/progmodes/sh-script.el
+7
-4
No files found.
lisp/ChangeLog
View file @
e6769f18
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.
...
...
lisp/progmodes/sh-script.el
View file @
e6769f18
...
...
@@ -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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment