]> git.eshelyaron.com Git - emacs.git/commitdiff
Backport: js--re-search-backward-inner: Fix infloop
authorDmitry Gutov <dgutov@yandex.ru>
Fri, 1 Feb 2019 00:01:39 +0000 (03:01 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 25 Feb 2019 16:14:20 +0000 (19:14 +0300)
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.

(cherry picked from commit b01a4295c2f9bb58858880e4e28b05cc8396791c)

lisp/progmodes/js.el
test/manual/indent/js.js

index 14571a04e1c2cb2dd4d880ec345a1f75c9cbc800..9c3f3b3e4f4df75f327f17bf0a9c429e88c8fb8a 100644 (file)
@@ -794,7 +794,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)
@@ -805,13 +804,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) ?*)))
index b0d8bcabd203f222144ff157ae658a817781360b..df790986947ffb7a12a3d5ced6714bbd7a8edae3 100644 (file)
@@ -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