]> git.eshelyaron.com Git - emacs.git/commitdiff
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>
Fri, 1 Feb 2019 00:02:06 +0000 (03:02 +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.

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

index e55539c17f415c7aeec9bf786581b31730c261ac..a94a2fe134e7f9b5da412f344a1e9ae92a46cd6b 100644 (file)
@@ -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) ?*)))
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