diff options
| author | Dmitry Gutov <dgutov@yandex.ru> | 2017-10-26 02:43:33 +0300 |
|---|---|---|
| committer | Dmitry Gutov <dgutov@yandex.ru> | 2017-10-26 02:43:53 +0300 |
| commit | e562356c3f31bf96250bd3e8a7c50e8322b15d68 (patch) | |
| tree | 60a23fe740315bf331ee74bcd2140c9711ee9fcf | |
| parent | b8cf159bbccce6393689ae969bc2e484b9b085f6 (diff) | |
| download | emacs-e562356c3f31bf96250bd3e8a7c50e8322b15d68.tar.gz | |
Fix two js indentation problems
Fix intentation problems reported in
https://github.com/mooz/js2-mode/issues/463.
* lisp/progmodes/js.el (js--continued-expression-p):
Check syntax state after /.
(js--multi-line-declaration-indentation):
Check syntax state before "const".
| -rw-r--r-- | lisp/progmodes/js.el | 21 | ||||
| -rw-r--r-- | test/manual/indent/js.js | 9 |
2 files changed, 24 insertions, 6 deletions
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 2bbacf7bae4..1f86909362e 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1834,10 +1834,15 @@ This performs fontification according to `js--class-styles'." (save-excursion (back-to-indentation) (if (js--looking-at-operator-p) - (or (not (memq (char-after) '(?- ?+))) - (progn - (forward-comment (- (point))) - (not (memq (char-before) '(?, ?\[ ?\())))) + (if (eq (char-after) ?/) + (prog1 + (not (nth 3 (syntax-ppss (1+ (point))))) + (forward-char -1)) + (or + (not (memq (char-after) '(?- ?+))) + (progn + (forward-comment (- (point))) + (not (memq (char-before) '(?, ?\[ ?\()))))) (and (js--find-newline-backward) (progn (skip-chars-backward " \t") @@ -1972,8 +1977,12 @@ statement spanning multiple lines; otherwise, return nil." (save-excursion (back-to-indentation) (when (not (looking-at js--declaration-keyword-re)) - (when (looking-at js--indent-operator-re) - (goto-char (match-end 0))) + (let ((pt (point))) + (when (looking-at js--indent-operator-re) + (goto-char (match-end 0))) + ;; The "operator" is probably a regexp literal opener. + (when (nth 3 (syntax-ppss)) + (goto-char pt))) (while (and (not at-opening-bracket) (not (bobp)) (let ((pos (point))) diff --git a/test/manual/indent/js.js b/test/manual/indent/js.js index 1ad76a83e18..b0d8bcabd20 100644 --- a/test/manual/indent/js.js +++ b/test/manual/indent/js.js @@ -7,6 +7,9 @@ let c = 1, var e = 100500, + 1; +// Don't misinterpret "const" +/const/ + function test () { return /[/]/.test ('/') // (bug#19397) @@ -135,6 +138,12 @@ if (1) { : 4 } +// Regexp is not a continuation +bar( + "string arg1", + /abc/ +) + // Local Variables: // indent-tabs-mode: nil // js-indent-level: 2 |
