diff options
author | Dmitry Gutov <dgutov@yandex.ru> | 2019-02-01 03:01:39 +0300 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2019-02-01 03:02:06 +0300 |
commit | b01a4295c2f9bb58858880e4e28b05cc8396791c (patch) | |
tree | 0a2486d50106ea36222fdac2922b31fe0c75ab7f | |
parent | 47679e63230da94cffed568a4d5167ffc1baea96 (diff) | |
download | emacs-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.el | 9 | ||||
-rw-r--r-- | 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 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 |