From c988ddb4d04f23d7cf6d9956d4cfb756fee631ac Mon Sep 17 00:00:00 2001 From: mfroeh Date: Fri, 4 Sep 2026 20:56:08 +0200 Subject: [PATCH] Improve UX of let/let mut snippet cursor placement in block expressions --- crates/ide-completion/src/completions/expr.rs | 4 ++-- crates/ide-completion/src/completions/keyword.rs | 8 ++++---- crates/ide-completion/src/tests/expression.rs | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs index 3e95128bd70e..95525c0f9dae 100644 --- a/crates/ide-completion/src/completions/expr.rs +++ b/crates/ide-completion/src/completions/expr.rs @@ -386,8 +386,8 @@ pub(crate) fn complete_expr_path<'db>( } if in_block_expr { - add_keyword("letm", "let mut $1 = $0;"); - add_keyword("let", "let $1 = $0;"); + add_keyword("letm", "let mut $1 = $2;$0"); + add_keyword("let", "let $1 = $2;$0"); } if !before_else_kw && (after_if_expr || after_incomplete_let) { diff --git a/crates/ide-completion/src/completions/keyword.rs b/crates/ide-completion/src/completions/keyword.rs index f7dd1589ae7d..3806276f47a8 100644 --- a/crates/ide-completion/src/completions/keyword.rs +++ b/crates/ide-completion/src/completions/keyword.rs @@ -736,7 +736,7 @@ fn main() { "#, r#" fn main() { - let $1 = $0; + let $1 = $2;$0 } "#, ); @@ -749,7 +749,7 @@ fn main() { "#, r#" fn main() { - let mut $1 = $0; + let mut $1 = $2;$0 } "#, ); @@ -826,7 +826,7 @@ fn main() { "#, r#" fn main() { - if { let $1 = $0; } {} + if { let $1 = $2;$0 } {} } "#, ); @@ -839,7 +839,7 @@ fn main() { "#, r#" fn main() { - if { let mut $1 = $0; } {} + if { let mut $1 = $2;$0 } {} } "#, ); diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs index 6e90bcd49bee..194166376ea9 100644 --- a/crates/ide-completion/src/tests/expression.rs +++ b/crates/ide-completion/src/tests/expression.rs @@ -3672,7 +3672,7 @@ fn let_in_previous_line_of_ambiguous_expr() { }"#, r#" fn f() { - let $1 = $0; + let $1 = $2;$0 (1, 2).foo(); }"#, ); @@ -3686,7 +3686,7 @@ fn let_in_previous_line_of_ambiguous_expr() { }"#, r#" fn f() { - let $1 = $0; + let $1 = $2;$0 (1, 2) }"#, ); @@ -3700,7 +3700,7 @@ fn let_in_previous_line_of_ambiguous_expr() { }"#, r#" fn f() -> i32 { - let $1 = $0; + let $1 = $2;$0 -2 }"#, ); @@ -3714,7 +3714,7 @@ fn let_in_previous_line_of_ambiguous_expr() { }"#, r#" fn f() -> [i32; 2] { - let $1 = $0; + let $1 = $2;$0 [1, 2] }"#, ); @@ -3728,7 +3728,7 @@ fn let_in_previous_line_of_ambiguous_expr() { }"#, r#" fn f() -> [u8; 2] { - let $1 = $0; + let $1 = $2;$0 *b"01" }"#, );