diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-14 17:38:51 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-14 17:38:51 +0000 |
commit | 10bf61b83b2600ed3cb7e7825f1cd0ee83e9b7e7 (patch) | |
tree | 189f987eb5b2925448bb39c27cb31a78fef53fa4 /crates/ra_ide_api/src/completion/complete_postfix.rs | |
parent | 9d22704064e60b0670ee0274b54be968b86f92d6 (diff) | |
parent | 5f8ec8aa10d2c012b321d9779037b6320c1f2efb (diff) |
Merge #831
831: tweak postfix completions r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_postfix.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_postfix.rs | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs index 10a3c8db7..d1f6b9433 100644 --- a/crates/ra_ide_api/src/completion/complete_postfix.rs +++ b/crates/ra_ide_api/src/completion/complete_postfix.rs | |||
@@ -15,7 +15,7 @@ use ra_syntax::{ | |||
15 | }; | 15 | }; |
16 | use ra_text_edit::TextEditBuilder; | 16 | use ra_text_edit::TextEditBuilder; |
17 | 17 | ||
18 | fn postfix_snippet(ctx: &CompletionContext, label: &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 replace_range = ctx.source_range(); |
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(), replace_range.start()); |
@@ -23,22 +23,33 @@ fn postfix_snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Build | |||
23 | builder.delete(delete_range); | 23 | builder.delete(delete_range); |
24 | CompletionItem::new(CompletionKind::Postfix, replace_range, label) | 24 | CompletionItem::new(CompletionKind::Postfix, replace_range, label) |
25 | .snippet(snippet) | 25 | .snippet(snippet) |
26 | .detail(detail) | ||
26 | .text_edit(builder.finish()) | 27 | .text_edit(builder.finish()) |
27 | } | 28 | } |
28 | 29 | ||
29 | pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { | 30 | pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { |
30 | if let Some(dot_receiver) = ctx.dot_receiver { | 31 | if let Some(dot_receiver) = ctx.dot_receiver { |
31 | let receiver_text = dot_receiver.syntax().text().to_string(); | 32 | let receiver_text = dot_receiver.syntax().text().to_string(); |
32 | postfix_snippet(ctx, "not", &format!("!{}", receiver_text)).add_to(acc); | 33 | postfix_snippet(ctx, "not", "!expr", &format!("!{}", receiver_text)).add_to(acc); |
33 | postfix_snippet(ctx, "if", &format!("if {} {{$0}}", receiver_text)).add_to(acc); | 34 | postfix_snippet(ctx, "ref", "&expr", &format!("&{}", receiver_text)).add_to(acc); |
35 | postfix_snippet(ctx, "mref", "&mut expr", &format!("&mut {}", receiver_text)).add_to(acc); | ||
36 | postfix_snippet(ctx, "if", "if expr {}", &format!("if {} {{$0}}", receiver_text)) | ||
37 | .add_to(acc); | ||
34 | postfix_snippet( | 38 | postfix_snippet( |
35 | ctx, | 39 | ctx, |
36 | "match", | 40 | "match", |
41 | "match expr {}", | ||
37 | &format!("match {} {{\n${{1:_}} => {{$0\\}},\n}}", receiver_text), | 42 | &format!("match {} {{\n${{1:_}} => {{$0\\}},\n}}", receiver_text), |
38 | ) | 43 | ) |
39 | .add_to(acc); | 44 | .add_to(acc); |
40 | postfix_snippet(ctx, "while", &format!("while {} {{\n$0\n}}", receiver_text)).add_to(acc); | 45 | postfix_snippet( |
41 | postfix_snippet(ctx, "dbg", &format!("dbg!({})", receiver_text)).add_to(acc); | 46 | ctx, |
47 | "while", | ||
48 | "while expr {}", | ||
49 | &format!("while {} {{\n$0\n}}", receiver_text), | ||
50 | ) | ||
51 | .add_to(acc); | ||
52 | postfix_snippet(ctx, "dbg", "dbg!(expr)", &format!("dbg!({})", receiver_text)).add_to(acc); | ||
42 | } | 53 | } |
43 | } | 54 | } |
44 | 55 | ||