emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] master b01a429: js--re-search-backward-inner: Fix infl


From: Dmitry Gutov
Subject: Re: [Emacs-diffs] master b01a429: js--re-search-backward-inner: Fix infloop
Date: Fri, 1 Feb 2019 03:27:20 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:65.0) Gecko/20100101 Thunderbird/65.0

Hi Eli,

Any chance I may backport this to emacs-26?

The bug was reported only recently, but it seems pretty annoying (infloop during indentation), and the fix is simple.

On 01.02.2019 03:02, Dmitry Gutov wrote:
branch: master
commit b01a4295c2f9bb58858880e4e28b05cc8396791c
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

     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.
---
  lisp/progmodes/js.el     | 9 +--------
  test/manual/indent/js.js | 7 +++++++
  2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index e55539c..a94a2fe 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 b0d8bca..df79098 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

_______________________________________________
Emacs-diffs mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/emacs-diffs





reply via email to

[Prev in Thread] Current Thread [Next in Thread]