diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_postfix.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_postfix.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs index cf8c63269..ce3d6ed3c 100644 --- a/crates/ra_ide_api/src/completion/complete_postfix.rs +++ b/crates/ra_ide_api/src/completion/complete_postfix.rs | |||
@@ -16,15 +16,16 @@ use ra_syntax::{ | |||
16 | use ra_text_edit::TextEditBuilder; | 16 | use ra_text_edit::TextEditBuilder; |
17 | 17 | ||
18 | fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder { | 18 | fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder { |
19 | let replace_range = ctx.source_range(); | 19 | let edit = { |
20 | let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range(); | 20 | let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range(); |
21 | let delete_range = TextRange::from_to(receiver_range.start(), replace_range.start()); | 21 | let delete_range = TextRange::from_to(receiver_range.start(), ctx.source_range().end()); |
22 | let mut builder = TextEditBuilder::default(); | 22 | let mut builder = TextEditBuilder::default(); |
23 | builder.delete(delete_range); | 23 | builder.replace(delete_range, snippet.to_string()); |
24 | CompletionItem::new(CompletionKind::Postfix, replace_range, label) | 24 | builder.finish() |
25 | .snippet(snippet) | 25 | }; |
26 | CompletionItem::new(CompletionKind::Postfix, ctx.source_range(), label) | ||
26 | .detail(detail) | 27 | .detail(detail) |
27 | .text_edit(builder.finish()) | 28 | .snippet_edit(edit) |
28 | } | 29 | } |
29 | 30 | ||
30 | pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { | 31 | pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { |