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

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

[nongnu] elpa/swift-mode cb7ba6f 245/496: Add an option for indent after


From: ELPA Syncer
Subject: [nongnu] elpa/swift-mode cb7ba6f 245/496: Add an option for indent after hanging comma
Date: Sun, 29 Aug 2021 11:33:44 -0400 (EDT)

branch: elpa/swift-mode
commit cb7ba6f0bfc07211235f84fd47c95b63fa54632e
Author: uk-ar <yuuki.ari@gmail.com>
Commit: uk-ar <yuuki.ari@gmail.com>

    Add an option for indent after hanging comma
---
 swift-mode.el             | 29 +++++++++++++++++++++++------
 test/indentation-tests.el |  8 +++++---
 2 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/swift-mode.el b/swift-mode.el
index 15a7e20..19dd18a 100644
--- a/swift-mode.el
+++ b/swift-mode.el
@@ -61,6 +61,12 @@
   :type 'integer
   :package-version '(swift-mode "0.3.0"))
 
+(defcustom swift-indent-hanging-comma-offset 4
+  "Defines the indentation offset for hanging comma."
+  :group 'swift
+  :type 'integer
+  :package-version '(swift-mode "0.4.0"))
+
 (defcustom swift-repl-executable
   "xcrun swift"
   "Path to the Swift CLI."
@@ -153,9 +159,11 @@
        (enum-cases (enum-case) (enum-case ";" enum-case))
        (enum-body (enum-cases) (insts))
 
-       (case-exps (exp) (guard-exp))
-       (case (case-exps ":" insts))
-       (switch-body (case) (case "case" case))
+       (case-exps (exp)
+                  (guard-exp)
+                  (case-exps "," case-exps))
+       (case ("case" case-exps "case-:" insts))
+       (switch-body (case))
 
        (for-head (in-exp) (op-exp) (for-head ";" for-head))
 
@@ -247,7 +255,10 @@
    ((looking-at "}") (forward-char 1) "}")
 
    ((looking-at ",") (forward-char 1) ",")
-   ((looking-at ":") (forward-char 1) ":")
+   ((looking-at ":") (forward-char 1)
+    (if (looking-back "case [^:]+:")
+        "case-:"
+      ":"))
 
    ((looking-at "->") (forward-char 2) "->")
 
@@ -292,7 +303,10 @@
      ((eq (char-before) ?\}) (backward-char 1) "}")
 
      ((eq (char-before) ?,) (backward-char 1) ",")
-     ((eq (char-before) ?:) (backward-char 1) ":")
+     ((eq (char-before) ?:) (backward-char 1)
+      (if (looking-back "case [^:]+")
+          "case-:"
+        ":"))
 
      ((looking-back "->" (- (point) 2) t)
       (goto-char (match-beginning 0)) "->")
@@ -369,9 +383,12 @@
 
     ;; Indent second line of the multi-line class
     ;; definitions with swift-indent-offset
+    (`(:before . "case")
+     (smie-rule-parent))
+
     (`(:before . ",")
      (if (smie-rule-parent-p "class" "case")
-       (smie-rule-parent)))
+         (smie-rule-parent swift-indent-hanging-comma-offset)))
 
     ;; Disable unnecessary default indentation for
     ;; "func" and "class" keywords
diff --git a/test/indentation-tests.el b/test/indentation-tests.el
index 9773aac..3153cf1 100644
--- a/test/indentation-tests.el
+++ b/test/indentation-tests.el
@@ -59,6 +59,8 @@ values of customisable variables."
               (swift-indent-offset 4)
               (swift-indent-switch-case-offset 0)
               (swift-indent-multiline-statement-offset 2)
+              ;; Change from default value to detect offset bug.
+              (swift-indent-hanging-comma-offset 3)
               ,@var-bindings)
          (with-temp-buffer
            (insert ,before)
@@ -486,7 +488,7 @@ case foo where bar,
 " "
 switch true {
 case foo where bar,
-|bar where baz:
+   |bar where baz:
 }
 ")
 
@@ -685,7 +687,7 @@ class Foo: Foo, Bar,
 }
 " "
 class Foo: Foo, Bar,
-|Baz {
+   |Baz {
 }
 ")
 
@@ -725,7 +727,7 @@ public class Foo: Foo, Bar,
 }
 " "
 public class Foo: Foo, Bar,
-|Baz {
+   |Baz {
 }
 ")
 



reply via email to

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