diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 15a52ba8cdc..8c93ffa8731 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1770,16 +1770,20 @@ This performs fontification according to `js--class-styles'." "Return non-nil if the current line continues an expression." (save-excursion (back-to-indentation) - (or (js--looking-at-operator-p) - (and (js--re-search-backward "\n" nil t) - (progn - (skip-chars-backward " \t") - (or (bobp) (backward-char)) - (and (> (point) (point-min)) - (save-excursion (backward-char) (not (looking-at "[/*]/"))) - (js--looking-at-operator-p) - (and (progn (backward-char) - (not (looking-at "+\\+\\|--\\|/[/*]")))))))))) + (if (js--looking-at-operator-p) + (or (not (memq (char-after) '(?- ?+))) + (progn + (forward-comment (- (point))) + (not (memq (char-before) '(?, ?\[ ?\())))) + (and (js--re-search-backward "\n" nil t) + (progn + (skip-chars-backward " \t") + (or (bobp) (backward-char)) + (and (> (point) (point-min)) + (save-excursion (backward-char) (not (looking-at "[/*]/"))) + (js--looking-at-operator-p) + (and (progn (backward-char) + (not (looking-at "+\\+\\|--\\|/[/*]")))))))))) (defun js--end-of-do-while-loop-p () diff --git a/test/indent/js.js b/test/indent/js.js index d843f615fd8..61c7b440ea3 100644 --- a/test/indent/js.js +++ b/test/indent/js.js @@ -95,6 +95,12 @@ Foobar console.log(num); }); +var arr = [ + -1, 2, + -3, 4 + + -5 +]; + // Local Variables: // indent-tabs-mode: nil // js-indent-level: 2