* lisp/progmodes/sh-script.el (sh--inside-noncommand-expression):
Rename from sh--inside-arithmetic-expression, handle more cases. Fixes: debbugs:11263
This commit is contained in:
parent
b08b6da7fe
commit
3618df4590
3 changed files with 16 additions and 5 deletions
|
@ -1,5 +1,9 @@
|
|||
2012-10-31 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/sh-script.el (sh--inside-noncommand-expression):
|
||||
Rename from sh--inside-arithmetic-expression, handle more cases
|
||||
(bug#11263).
|
||||
|
||||
* progmodes/sh-script.el (sh--inside-arithmetic-expression): New func.
|
||||
(sh-font-lock-open-heredoc): Use it (bug#12770).
|
||||
|
||||
|
|
|
@ -940,14 +940,16 @@ See `sh-feature'.")
|
|||
(concat "<<-?\\s-*\\\\?\\(\\(?:['\"][^'\"]+['\"]\\|\\sw\\|[-/~._]\\)+\\)"
|
||||
sh-escaped-line-re "\\(\n\\)")))
|
||||
|
||||
(defun sh--inside-arithmetic-expression (pos)
|
||||
(defun sh--inside-noncommand-expression (pos)
|
||||
(save-excursion
|
||||
(let ((ppss (syntax-ppss pos)))
|
||||
(when (nth 1 ppss)
|
||||
(goto-char (nth 1 ppss))
|
||||
(and (eq ?\( (char-after))
|
||||
(eq ?\( (char-before))
|
||||
(eq ?\$ (char-before (1- (point)))))))))
|
||||
(pcase (char-after)
|
||||
;; $((...)) or $[...] or ${...}.
|
||||
(`?\( (and (eq ?\( (char-before))
|
||||
(eq ?\$ (char-before (1- (point))))))
|
||||
((or `?\{ `?\[) (eq ?\$ (char-before))))))))
|
||||
|
||||
(defun sh-font-lock-open-heredoc (start string eol)
|
||||
"Determine the syntax of the \\n after a <<EOF.
|
||||
|
@ -958,7 +960,7 @@ be indented (i.e. a <<- was used rather than just <<).
|
|||
Point is at the beginning of the next line."
|
||||
(unless (or (memq (char-before start) '(?< ?>))
|
||||
(sh-in-comment-or-string start)
|
||||
(sh--inside-arithmetic-expression start))
|
||||
(sh--inside-noncommand-expression start))
|
||||
;; We're looking at <<STRING, so we add "^STRING$" to the syntactic
|
||||
;; font-lock keywords to detect the end of this here document.
|
||||
(let ((str (replace-regexp-in-string "['\"]" "" string))
|
||||
|
|
|
@ -9,6 +9,11 @@ echo -n $(( 5 << 2 ))
|
|||
# This should not be treated as a heredoc (bug#12770).
|
||||
2
|
||||
|
||||
foo='bar<<' # bug#11263
|
||||
echo ${foo%<<aa} # bug#11263
|
||||
echo $((1<<8)) # bug#11263
|
||||
echo $[1<<8] # bug#11263
|
||||
|
||||
declare -a VERSION
|
||||
for i in $(ls "$PREFIX/sbin") ; do
|
||||
echo -e $N')' $i
|
||||
|
|
Loading…
Add table
Reference in a new issue