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

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

[nongnu] elpa/swift-mode 31fb250 248/496: added elseguard to lexer


From: ELPA Syncer
Subject: [nongnu] elpa/swift-mode 31fb250 248/496: added elseguard to lexer
Date: Sun, 29 Aug 2021 11:33:45 -0400 (EDT)

branch: elpa/swift-mode
commit 31fb250e2b58a76ffa0504be980698cc6cffd812
Author: Anthony Green <akoaysigod@gmail.com>
Commit: Anthony Green <akoaysigod@gmail.com>

    added elseguard to lexer
---
 swift-mode.el             | 16 ++++++++++++----
 test/indentation-tests.el | 11 +++++++++++
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/swift-mode.el b/swift-mode.el
index aca877c..362edb2 100644
--- a/swift-mode.el
+++ b/swift-mode.el
@@ -131,8 +131,8 @@
              (method-call "{" closure "}")
              ("enum" decl-exp "{" enum-body "}")
              ("switch" exp "{" switch-body "}")
-             (guard-statement)
              (if-clause)
+             (guard-statement)
              ("for" for-head "{" insts "}")
              ("while" exp "{" insts "}"))
 
@@ -161,7 +161,7 @@
        (for-head (in-exp) (op-exp) (for-head ";" for-head))
 
        (guard-conditional (exp) (let-decl) (var-decl))
-       (guard-statement ("guard" guard-conditional "else" "{" insts "return" 
"}"))
+       (guard-statement ("guard" guard-conditional "elseguard" "{" insts "}"))
 
        (if-conditional (exp) (let-decl))
        (if-body ("if" if-conditional "{" insts "}"))
@@ -274,13 +274,17 @@
 
    ((looking-at "else if")
     (goto-char (match-end 0)) "elseif")
-
+   
    (t (let ((tok (smie-default-forward-token)))
         (cond
          ((equal tok "case")
           (if (looking-at "\\([\n\t ]\\|.\\)+?\\(where.*[,]\\|:\\)")
               "case"
             "ecase"))
+         ((equal tok "else")
+          (if (looking-back "\\(guard.*\\)")
+              "elseguard"
+            "else"))
          (t tok))))
    ))
 
@@ -328,6 +332,10 @@
             (if (looking-at "\\([\n\t ]\\|.\\)+?\\(where.*[,]\\|:\\)")
                 "case"
               "ecase"))
+           ((equal tok "else")
+            (if (looking-back "\\(guard.*\\)")
+                "elseguard"
+              "else"))
            (t tok))))
      )))
 
@@ -424,7 +432,7 @@
 
 (defvar swift-mode--statement-keywords
   '("break" "case" "continue" "default" "do" "else" "fallthrough"
-    "if" "in" "for" "return" "switch" "where" "while"))
+    "if" "in" "for" "return" "switch" "where" "while" "guard"))
 
 (defvar swift-mode--contextual-keywords
   '("associativity" "didSet" "get" "infix" "inout" "left" "mutating" "none"
diff --git a/test/indentation-tests.el b/test/indentation-tests.el
index 256f3d7..60c7dcb 100644
--- a/test/indentation-tests.el
+++ b/test/indentation-tests.el
@@ -2065,6 +2065,17 @@ func foo() {
 }
 ")
 
+(check-indentation indents-guard-statement/1
+                   "
+guard let x = y else {
+        |return
+}
+" "
+guard let x = y else {
+    |return
+}
+")
+
 (provide 'indentation-tests)
 
 ;;; indentation-tests.el ends here



reply via email to

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