aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_postfix.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_postfix.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_postfix.rs17
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::{
16use ra_text_edit::TextEditBuilder; 16use ra_text_edit::TextEditBuilder;
17 17
18fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder { 18fn 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
30pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { 31pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {