From b2af3314dbc039f2f34c27b725f7e32dd7b5bd1a Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Sat, 2 Apr 2016 03:32:07 +0300 Subject: [PATCH] Special-case unary + and - Fixes #322 --- js2-old-indent.el | 24 ++++++++++-------------- tests/indent.el | 7 +++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/js2-old-indent.el b/js2-old-indent.el index d855b9e25..d8932d60c 100644 --- a/js2-old-indent.el +++ b/js2-old-indent.el @@ -239,20 +239,16 @@ and comments have been removed." "Return non-nil if the current line continues an expression." (save-excursion (back-to-indentation) - (or (js2-looking-at-operator-p) - (when (catch 'found - (while (and (re-search-backward "\n" nil t) - (let ((state (syntax-ppss))) - (when (nth 4 state) - (goto-char (nth 8 state))) ;; skip comments - (skip-chars-backward " \t") - (if (bolp) - t - (throw 'found t)))))) - (backward-char) - (when (js2-looking-at-operator-p) - (backward-char) - (not (looking-at "\\*\\|\\+\\+\\|--\\|/[/*]"))))))) + (if (js2-looking-at-operator-p) + (or (not (memq (char-after) '(?- ?+))) + (progn + (forward-comment (- (point))) + (not (memq (char-before) '(?, ?\[ ?\())))) + (forward-comment (- (point))) + (or (bobp) (backward-char)) + (when (js2-looking-at-operator-p) + (backward-char) + (not (looking-at "\\*\\|\\+\\+\\|--\\|/[/*]")))))) (defun js2-end-of-do-while-loop-p () "Return non-nil if word after point is `while' of a do-while diff --git a/tests/indent.el b/tests/indent.el index b0235fffc..91b86565f 100644 --- a/tests/indent.el +++ b/tests/indent.el @@ -179,6 +179,13 @@ |}" :bind ((js2-indent-switch-body t))) +(js2-deftest-indent continued-expression-vs-unary-minus + "var arr = [ + | -1, 2, + | -3, 4 + + | -5 + |];") + (js2-deftest-indent jsx-one-line "var foo =
;") -- 2.39.2