summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rc/filetype/rust.kak4
-rw-r--r--test/indent/rust/dedent-async/in3
-rw-r--r--test/indent/rust/dedent-async/out4
-rw-r--r--test/indent/rust/dedent-function-closing-brace/in8
-rw-r--r--test/indent/rust/dedent-function-closing-brace/out11
-rw-r--r--test/indent/rust/dedent-generic-closing-brace/in3
-rw-r--r--test/indent/rust/dedent-generic-closing-brace/out4
7 files changed, 30 insertions, 7 deletions
diff --git a/rc/filetype/rust.kak b/rc/filetype/rust.kak
index 1267f52a..473a2e89 100644
--- a/rc/filetype/rust.kak
+++ b/rc/filetype/rust.kak
@@ -157,8 +157,8 @@ define-command -hidden rust-indent-on-new-line %~
try %< execute-keys -draft k <a-x> s [^\h].+ <ret> <a-K> \A[-+*/&|^})<gt><lt>#] <ret> <a-K> [,<semicolon>{](\h*/[/*].*|)$ <ret> j <a-gt> >
# indent after lines ending with {
try %< execute-keys -draft k <a-x> <a-k> \{$ <ret> j <a-gt> >
- # dedent after lines starting with . and ending with } or ) or , or ; or .await
- try %_ execute-keys -draft k <a-x> <a-k> ^\h*\. <ret> <a-k>([}),<semicolon>]|\.await)\h*$ <ret> j <a-lt> _
+ # dedent after lines starting with . and ending with } or ) or , or ; or .await (} or ) or .await maybe with ?)
+ try %_ execute-keys -draft k <a-x> <a-k> ^\h*\. <ret> <a-k> ([,<semicolon>]|(([})]|\.await)\?*))\h*$ <ret> j <a-lt> _
# dedent after lines ending with " => {}" - part of empty match
try %# execute-keys -draft k <a-x> <a-k> \ =>\ \{\}\h*$ <ret> j <a-lt> #
# align to opening curly brace or paren when newline is inserted before a single closing
diff --git a/test/indent/rust/dedent-async/in b/test/indent/rust/dedent-async/in
index 19fba70f..9ab0e36d 100644
--- a/test/indent/rust/dedent-async/in
+++ b/test/indent/rust/dedent-async/in
@@ -3,3 +3,6 @@
foo().await%( )
+ foo()
+ .await?%( )
+
diff --git a/test/indent/rust/dedent-async/out b/test/indent/rust/dedent-async/out
index 3ed467d8..41d7d9f4 100644
--- a/test/indent/rust/dedent-async/out
+++ b/test/indent/rust/dedent-async/out
@@ -5,3 +5,7 @@
foo().await
bar
+ foo()
+ .await?
+ bar
+
diff --git a/test/indent/rust/dedent-function-closing-brace/in b/test/indent/rust/dedent-function-closing-brace/in
index ab5cc032..bb946bea 100644
--- a/test/indent/rust/dedent-function-closing-brace/in
+++ b/test/indent/rust/dedent-function-closing-brace/in
@@ -11,5 +11,9 @@ fn foo() -> i32 {%( )bar()
fn foo() -> i32 {
bar()%( )}
- fn foo() -> i32 {
- bar()%( )}
+ fn foo() -> i32 {
+ bar()%( )}
+
+ fn foo() -> i32 {
+ bar()?%( )}
+
diff --git a/test/indent/rust/dedent-function-closing-brace/out b/test/indent/rust/dedent-function-closing-brace/out
index 2c58c554..5fe29ee1 100644
--- a/test/indent/rust/dedent-function-closing-brace/out
+++ b/test/indent/rust/dedent-function-closing-brace/out
@@ -16,6 +16,11 @@ fn foo() -> i32 {
bar()
}
- fn foo() -> i32 {
- bar()
- }
+ fn foo() -> i32 {
+ bar()
+ }
+
+ fn foo() -> i32 {
+ bar()?
+ }
+
diff --git a/test/indent/rust/dedent-generic-closing-brace/in b/test/indent/rust/dedent-generic-closing-brace/in
index 21109831..e3f48677 100644
--- a/test/indent/rust/dedent-generic-closing-brace/in
+++ b/test/indent/rust/dedent-generic-closing-brace/in
@@ -27,5 +27,8 @@
{(
bar()%( ))}
+{(
+ bar()?%( ))}
+
{(
bar()%( ))}
diff --git a/test/indent/rust/dedent-generic-closing-brace/out b/test/indent/rust/dedent-generic-closing-brace/out
index c8615372..4cecb179 100644
--- a/test/indent/rust/dedent-generic-closing-brace/out
+++ b/test/indent/rust/dedent-generic-closing-brace/out
@@ -38,6 +38,10 @@
bar()
)}
+{(
+ bar()?
+)}
+
{(
bar()
)}