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

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

[nongnu] elpa/swift-mode dd8f793 133/496: Make multi-line dot statement


From: ELPA Syncer
Subject: [nongnu] elpa/swift-mode dd8f793 133/496: Make multi-line dot statement offset customisable value
Date: Sun, 29 Aug 2021 11:33:22 -0400 (EDT)

branch: elpa/swift-mode
commit dd8f793ee861ae1cf0dc02a98b8858a8fa4c1ab3
Author: ap4y <lod@pisem.net>
Commit: ap4y <lod@pisem.net>

    Make multi-line dot statement offset customisable value
---
 swift-mode.el             | 14 ++++++++++++++
 test/indentation-tests.el | 31 +++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/swift-mode.el b/swift-mode.el
index adea3e9..d6f2f24 100644
--- a/swift-mode.el
+++ b/swift-mode.el
@@ -53,6 +53,12 @@
   :group 'swift
   :type 'integerp)
 
+(defcustom swift-indent-multiline-dot-offset 2
+  "Defines the indentation offset for for multiline dot statement."
+  :group 'swift
+  :type 'integerp
+  :package-version '(swift-mode "0.3.0"))
+
 (defcustom swift-repl-executable
   "xcrun swift"
   "Path to the Swift CLI."
@@ -266,6 +272,14 @@
      (if (smie-rule-parent-p "case" "default")
          (smie-rule-parent swift-indent-offset)))
 
+    ;; Apply swift-indent-multiline-dot-offset only if
+    ;; - dot is followed by newline, or
+    ;; - have at least one whitespace character before dot
+    (`(:before . ".")
+     (if (or (looking-at "[.][\n]")
+             (looking-back "[ \t\n]" 1 t))
+         (smie-rule-parent swift-indent-multiline-dot-offset)))
+
     (`(:before . "if")
      (if (smie-rule-prev-p "else")
          (if (smie-rule-parent-p "{")
diff --git a/test/indentation-tests.el b/test/indentation-tests.el
index d5dc4b4..c4c9e2a 100644
--- a/test/indentation-tests.el
+++ b/test/indentation-tests.el
@@ -58,6 +58,7 @@ values of customisable variables."
               ;; Bind customisable vars to default values for tests.
               (swift-indent-offset 4)
               (swift-indent-switch-case-offset 0)
+              (swift-indent-multiline-dot-offset 2)
               ,@var-bindings)
          (with-temp-buffer
            (insert ,before)
@@ -810,6 +811,36 @@ let json_ary = NSJSONSerialization
                |.JSONObjectWithData(data, options: nil, error: &json_err) as 
NSArray
 ")
 
+(check-indentation indents-multiline-expressions-to-user-defined-offset/1
+                   "
+NSNotificationCenter.defaultCenter().
+|postNotificationName(foo, object: nil)
+" "
+NSNotificationCenter.defaultCenter().
+    |postNotificationName(foo, object: nil)
+"
+((swift-indent-multiline-dot-offset 4)))
+
+(check-indentation indents-multiline-expressions-to-user-defined-offset/2
+                   "
+NSNotificationCenter.defaultCenter()
+|.postNotificationName(foo, object: nil)
+" "
+NSNotificationCenter.defaultCenter()
+    |.postNotificationName(foo, object: nil)
+"
+((swift-indent-multiline-dot-offset 4)))
+
+(check-indentation indents-multiline-expressions-to-user-defined-offset/3
+                   "
+let json_ary = NSJSONSerialization
+               |.JSONObjectWithData(data, options: nil, error: &json_err) as 
NSArray
+" "
+let json_ary = NSJSONSerialization
+                 |.JSONObjectWithData(data, options: nil, error: &json_err) as 
NSArray
+"
+((swift-indent-multiline-dot-offset 4)))
+
 (check-indentation indents-type-annotations/1
                    "
 typealias Foo = Bar<Foo.Baz, Foo>



reply via email to

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