summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2019-02-01 03:01:39 +0300
committerDmitry Gutov <dgutov@yandex.ru>2019-02-01 03:02:06 +0300
commitb01a4295c2f9bb58858880e4e28b05cc8396791c (patch)
tree0a2486d50106ea36222fdac2922b31fe0c75ab7f
parent47679e63230da94cffed568a4d5167ffc1baea96 (diff)
downloademacs-b01a4295c2f9bb58858880e4e28b05cc8396791c.tar.gz
js--re-search-backward-inner: Fix infloop
Fix JS indentation infloop reported in https://github.com/mooz/js2-mode/issues/513. * lisp/progmodes/js.el (js--re-search-backward-inner): Account for multiline string literals. * test/manual/indent/js.js: New test example.
-rw-r--r--lisp/progmodes/js.el9
-rw-r--r--test/manual/indent/js.js7
2 files changed, 8 insertions, 8 deletions
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index e55539c17f4..a94a2fe134e 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -785,7 +785,6 @@ macro as normal text."
(defun js--re-search-backward-inner (regexp &optional bound count)
"Auxiliary function for `js--re-search-backward'."
(let ((parse)
- str-terminator
(orig-macro-start
(save-excursion
(and (js--beginning-of-macro)
@@ -796,13 +795,7 @@ macro as normal text."
(save-excursion (backward-char) (looking-at "/[/*]")))
(forward-char))
(setq parse (syntax-ppss))
- (cond ((setq str-terminator (nth 3 parse))
- (when (eq str-terminator t)
- (setq str-terminator ?/))
- (re-search-backward
- (concat "\\([^\\]\\|^\\)" (string str-terminator))
- (point-at-bol) t))
- ((nth 7 parse)
+ (cond ((nth 8 parse)
(goto-char (nth 8 parse)))
((or (nth 4 parse)
(and (eq (char-before) ?/) (eq (char-after) ?*)))
diff --git a/test/manual/indent/js.js b/test/manual/indent/js.js
index b0d8bcabd20..df790986947 100644
--- a/test/manual/indent/js.js
+++ b/test/manual/indent/js.js
@@ -144,6 +144,13 @@ bar(
/abc/
)
+// No infloop inside js--re-search-backward-inner
+let b = {
+ a : `
+ //1
+ `
+}
+
// Local Variables:
// indent-tabs-mode: nil
// js-indent-level: 2