emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/typescript-mode f25f4751fe 052/222: Merge pull request #31


From: ELPA Syncer
Subject: [nongnu] elpa/typescript-mode f25f4751fe 052/222: Merge pull request #31 from lddubeau/fix/spread-syntax
Date: Sun, 6 Feb 2022 16:59:13 -0500 (EST)

branch: elpa/typescript-mode
commit f25f4751fea12298905c811a1f469a6b0a169ef1
Merge: 5931f2776d 89d22c4e18
Author: Jostein Kjønigsen <jostein@kjonigsen.net>
Commit: GitHub <noreply@github.com>

    Merge pull request #31 from lddubeau/fix/spread-syntax
    
    Indentation fixes for handling the spread syntax and regular expressions in 
lists.
---
 test-files/indentation-reference-document.ts | 40 ++++++++++++++++++++++++++++
 typescript-mode.el                           | 32 +++++++++++++++-------
 2 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/test-files/indentation-reference-document.ts 
b/test-files/indentation-reference-document.ts
index f6c4919120..da1dd7d80c 100644
--- a/test-files/indentation-reference-document.ts
+++ b/test-files/indentation-reference-document.ts
@@ -196,4 +196,44 @@ namespace ts.server {
             }
         }
     }
+
+    // Spread syntax
+    {
+        const a = { a: 1, b: 2 };
+        const b = {
+            ...a,
+            a: 3,
+        };
+        const c = [1, 2];
+        const d = [
+            "a",
+            ...c
+        ];
+
+        function foo(a: string,
+                     b: number,
+                     ...rest: any[]) {
+        }
+    }
+
+    {
+        // Regular expressions in lists.
+
+        // List objects...
+        const a = [
+            /abc/,
+            /def/
+        ];
+
+        const z =
+            /abcd/;
+
+        // Argument lists...
+        function foo(a: RegExp, b: RegExp): void {
+        }
+
+        foo(
+            /abc/,
+            /def/);
+    }
 }
diff --git a/typescript-mode.el b/typescript-mode.el
index 08651a8dd0..5de10fb9a6 100644
--- a/typescript-mode.el
+++ b/typescript-mode.el
@@ -1659,6 +1659,14 @@ See `font-lock-keywords'.")
              (save-excursion
                (and (typescript--re-search-backward "[?:{]\\|\\_<case\\_>" nil 
t)
                     (looking-at "?"))))
+         ;; Do not identify forward slashes appearing in a "list" as
+         ;; an operator. The lists are: arrays, or lists of
+         ;; arguments. In this context, they must be part of regular
+         ;; expressions, and not math operators.
+         (not (and (looking-at "/")
+                   (save-excursion
+                     (typescript--backward-syntactic-ws)
+                     (memq (char-before) '(?, ?\[ ?\()))))
          ;; Do not identify methods, or fields, that are named "in" or
          ;; "instanceof" as being operator keywords.
          (not (and
@@ -1683,16 +1691,20 @@ See `font-lock-keywords'.")
   "Return non-nil if the current line continues an expression."
   (save-excursion
     (back-to-indentation)
-    (or (typescript--looking-at-operator-p)
-        (and (typescript--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 "[/*]/")))
-                    (typescript--looking-at-operator-p)
-                   (and (progn (backward-char)
-                               (not (looking-at "++\\|--\\|/[/*]"))))))))))
+    (and
+     ;; Don't identify the spread syntax or rest operator as a
+     ;; "continuation".
+     (not (looking-at "\\.\\.\\."))
+     (or (typescript--looking-at-operator-p)
+         (and (typescript--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 
"[/*]/")))
+                     (typescript--looking-at-operator-p)
+                     (and (progn (backward-char)
+                                 (not (looking-at "++\\|--\\|/[/*]")))))))))))
 
 
 (defun typescript--end-of-do-while-loop-p ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]