Skip to content

Commit 5f8ec8a

Browse files
committed
tweak postfix completions
* better label * add refm for &mut
1 parent 434f152 commit 5f8ec8a

File tree

2 files changed

+60
-13
lines changed

2 files changed

+60
-13
lines changed

crates/ra_ide_api/src/completion/complete_postfix.rs

+16-6
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,41 @@ use ra_syntax::{
1515
};
1616
use ra_text_edit::TextEditBuilder;
1717

18-
fn postfix_snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Builder {
18+
fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder {
1919
let replace_range = ctx.source_range();
2020
let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range();
2121
let delete_range = TextRange::from_to(receiver_range.start(), replace_range.start());
2222
let mut builder = TextEditBuilder::default();
2323
builder.delete(delete_range);
2424
CompletionItem::new(CompletionKind::Postfix, replace_range, label)
2525
.snippet(snippet)
26+
.detail(detail)
2627
.text_edit(builder.finish())
2728
}
2829

2930
pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
3031
if let Some(dot_receiver) = ctx.dot_receiver {
3132
let receiver_text = dot_receiver.syntax().text().to_string();
32-
postfix_snippet(ctx, "not", &format!("!{}", receiver_text)).add_to(acc);
33-
postfix_snippet(ctx, "ref", &format!("&{}", receiver_text)).add_to(acc);
34-
postfix_snippet(ctx, "if", &format!("if {} {{$0}}", receiver_text)).add_to(acc);
33+
postfix_snippet(ctx, "not", "!expr", &format!("!{}", 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);
3538
postfix_snippet(
3639
ctx,
3740
"match",
41+
"match expr {}",
3842
&format!("match {} {{\n${{1:_}} => {{$0\\}},\n}}", receiver_text),
3943
)
4044
.add_to(acc);
41-
postfix_snippet(ctx, "while", &format!("while {} {{\n$0\n}}", receiver_text)).add_to(acc);
42-
postfix_snippet(ctx, "dbg", &format!("dbg!({})", receiver_text)).add_to(acc);
45+
postfix_snippet(
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);
4353
}
4454
}
4555

crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap

+44-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
created: "2019-02-14T17:12:57.412523988Z"
2+
created: "2019-02-14T17:38:20.322102467Z"
33
creator: insta@0.6.2
44
source: crates/ra_ide_api/src/completion/completion_item.rs
55
expression: kind_completions
@@ -9,7 +9,9 @@ expression: kind_completions
99
completion_kind: Postfix,
1010
label: "dbg",
1111
kind: None,
12-
detail: None,
12+
detail: Some(
13+
"dbg!(expr)"
14+
),
1315
documentation: None,
1416
lookup: None,
1517
insert_text: Some(
@@ -32,7 +34,9 @@ expression: kind_completions
3234
completion_kind: Postfix,
3335
label: "if",
3436
kind: None,
35-
detail: None,
37+
detail: Some(
38+
"if expr {}"
39+
),
3640
documentation: None,
3741
lookup: None,
3842
insert_text: Some(
@@ -55,7 +59,9 @@ expression: kind_completions
5559
completion_kind: Postfix,
5660
label: "match",
5761
kind: None,
58-
detail: None,
62+
detail: Some(
63+
"match expr {}"
64+
),
5965
documentation: None,
6066
lookup: None,
6167
insert_text: Some(
@@ -74,11 +80,38 @@ expression: kind_completions
7480
}
7581
)
7682
},
83+
CompletionItem {
84+
completion_kind: Postfix,
85+
label: "mref",
86+
kind: None,
87+
detail: Some(
88+
"&mut expr"
89+
),
90+
documentation: None,
91+
lookup: None,
92+
insert_text: Some(
93+
"&mut bar"
94+
),
95+
insert_text_format: Snippet,
96+
source_range: [76; 76),
97+
text_edit: Some(
98+
TextEdit {
99+
atoms: [
100+
AtomTextEdit {
101+
delete: [72; 76),
102+
insert: ""
103+
}
104+
]
105+
}
106+
)
107+
},
77108
CompletionItem {
78109
completion_kind: Postfix,
79110
label: "not",
80111
kind: None,
81-
detail: None,
112+
detail: Some(
113+
"!expr"
114+
),
82115
documentation: None,
83116
lookup: None,
84117
insert_text: Some(
@@ -101,7 +134,9 @@ expression: kind_completions
101134
completion_kind: Postfix,
102135
label: "ref",
103136
kind: None,
104-
detail: None,
137+
detail: Some(
138+
"&expr"
139+
),
105140
documentation: None,
106141
lookup: None,
107142
insert_text: Some(
@@ -124,7 +159,9 @@ expression: kind_completions
124159
completion_kind: Postfix,
125160
label: "while",
126161
kind: None,
127-
detail: None,
162+
detail: Some(
163+
"while expr {}"
164+
),
128165
documentation: None,
129166
lookup: None,
130167
insert_text: Some(

0 commit comments

Comments
 (0)