]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix two js indentation problems
authorDmitry Gutov <dgutov@yandex.ru>
Wed, 25 Oct 2017 23:43:33 +0000 (02:43 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Wed, 25 Oct 2017 23:43:53 +0000 (02:43 +0300)
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".

lisp/progmodes/js.el
test/manual/indent/js.js

index 2bbacf7bae473d9d2e157ade40ad9e1adafe67bf..1f86909362edb462c750568e55d2ffe0eb191bd6 100644 (file)
@@ -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)))
index 1ad76a83e18b60b3a5a05b49c06e6316f30aa007..b0d8bcabd203f222144ff157ae658a817781360b 100644 (file)
@@ -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