branch: elpa/rust-mode
commit b861aa9e54e2af362d702ae4bf8741ea4617dc3c
Author: Jonas Westlund <[email protected]>
Commit: Jonas Westlund <[email protected]>
Fixed indent when ? operator is used in chained method calls
---
rust-mode-tests.el | 24 ++++++++++++++++++++++++
rust-mode.el | 4 ++--
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index fd29d5d..3e6c67a 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -1668,6 +1668,18 @@ fn main() {
"
)))
+(ert-deftest indent-method-chains-no-align-with-question-mark-operator ()
+ (let ((rust-indent-method-chain nil)) (test-indent
+ "
+fn main() {
+ let x = thing.do_it()
+ .aligned()
+ .more_alignment()?
+ .more_alignment();
+}
+"
+ )))
+
(ert-deftest indent-method-chains-with-align ()
(let ((rust-indent-method-chain t)) (test-indent
"
@@ -1679,6 +1691,18 @@ fn main() {
"
)))
+(ert-deftest indent-method-chains-with-align-with-question-mark-operator ()
+ (let ((rust-indent-method-chain t)) (test-indent
+ "
+fn main() {
+ let x = thing.do_it()
+ .aligned()
+ .more_alignment()?
+ .more_alignment();
+}
+"
+ )))
+
(ert-deftest indent-method-chains-with-align-and-second-stmt ()
(let ((rust-indent-method-chain t)) (test-indent
"
diff --git a/rust-mode.el b/rust-mode.el
index 0c31b6c..908b892 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -320,7 +320,7 @@ buffer."
(- (current-column) rust-indent-offset)))))
(cond
;; foo.bar(...)
- ((rust-looking-back-str ")")
+ ((looking-back "[)?]" (1- (point)))
(backward-list 1)
(funcall skip-dot-identifier))
@@ -501,7 +501,7 @@ buffer."
;; ..or if the previous line ends with any of these:
;; { ? : ( , ; [ }
;; then we are at the beginning of an expression, so
stay on the baseline...
- (looking-back "[(,:;?[{}]\\|[^|]|" (- (point) 2))
+ (looking-back "[(,:;[{}]\\|[^|]|" (- (point) 2))
;; or if the previous line is the end of an
attribute, stay at the baseline...
(progn
(rust-rewind-to-beginning-of-current-level-expr) (looking-at "#")))))
baseline