Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide/src/typing.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/crates/ide/src/typing.rs b/crates/ide/src/typing.rs
index f8b0dbfe62..76c0ebcecb 100644
--- a/crates/ide/src/typing.rs
+++ b/crates/ide/src/typing.rs
@@ -107,7 +107,7 @@ fn on_char_typed_(
'.' => on_dot_typed(&file.tree(), offset),
'=' => on_eq_typed(&file.tree(), offset),
'>' => on_right_angle_typed(&file.tree(), offset),
- '{' | '(' | '<' => on_opening_delimiter_typed(file, offset, char_typed, edition),
+ '{' | '(' | '<' => return on_opening_delimiter_typed(file, offset, char_typed, edition),
'|' => on_pipe_typed(&file.tree(), offset),
'+' => on_plus_typed(&file.tree(), offset),
_ => None,
@@ -126,7 +126,7 @@ fn on_opening_delimiter_typed(
offset: TextSize,
opening_bracket: char,
edition: Edition,
-) -> Option<TextEdit> {
+) -> Option<ExtendedTextEdit> {
type FilterFn = fn(SyntaxKind) -> bool;
let (closing_bracket, expected_ast_bracket, allowed_kinds) = match opening_bracket {
'{' => ('}', SyntaxKind::L_CURLY, &[ast::Expr::can_cast as FilterFn] as &[FilterFn]),
@@ -155,12 +155,12 @@ fn on_opening_delimiter_typed(
if let Some(edit) =
on_delimited_node_typed(&reparsed, offset, opening_bracket, closing_bracket, allowed_kinds)
{
- return Some(edit);
+ return Some(ExtendedTextEdit { edit, is_snippet: true });
}
match opening_bracket {
- '{' => on_left_brace_typed(&reparsed, offset),
- '<' => on_left_angle_typed(&file.tree(), &reparsed, offset),
+ '{' => on_left_brace_typed(&reparsed, offset).map(conv),
+ '<' => on_left_angle_typed(&file.tree(), &reparsed, offset).map(conv),
_ => None,
}
}
@@ -218,7 +218,7 @@ fn on_delimited_node_typed(
// Insert the closing bracket right after the node.
Some(TextEdit::insert(
node.text_range().end() + TextSize::of(opening_bracket),
- closing_bracket.to_string(),
+ format!("$0{closing_bracket}"),
))
}
/// Returns an edit which should be applied after `=` was typed. Primarily,