Skip to content

Commit 10bf61b

Browse files
bors[bot]matklad
andcommitted
Merge #831
831: tweak postfix completions r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
2 parents 9d22704 + 5f8ec8a commit 10bf61b

File tree

2 files changed

+84
-13
lines changed

2 files changed

+84
-13
lines changed

crates/ra_ide_api/src/completion/complete_postfix.rs

+16-5
Original file line numberDiff line numberDiff line change
@@ -15,30 +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, "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);
3438
postfix_snippet(
3539
ctx,
3640
"match",
41+
"match expr {}",
3742
&format!("match {} {{\n${{1:_}} => {{$0\\}},\n}}", receiver_text),
3843
)
3944
.add_to(acc);
40-
postfix_snippet(ctx, "while", &format!("while {} {{\n$0\n}}", receiver_text)).add_to(acc);
41-
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);
4253
}
4354
}
4455

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

+68-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
---
2-
created: "2019-02-03T11:38:42.897384636+00:00"
3-
creator: insta@0.5.3
4-
expression: kind_completions
2+
created: "2019-02-14T17:38:20.322102467Z"
3+
creator: insta@0.6.2
54
source: crates/ra_ide_api/src/completion/completion_item.rs
5+
expression: kind_completions
66
---
77
[
88
CompletionItem {
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 @@ source: crates/ra_ide_api/src/completion/completion_item.rs
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 @@ source: crates/ra_ide_api/src/completion/completion_item.rs
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 @@ source: crates/ra_ide_api/src/completion/completion_item.rs
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(
@@ -97,11 +130,38 @@ source: crates/ra_ide_api/src/completion/completion_item.rs
97130
}
98131
)
99132
},
133+
CompletionItem {
134+
completion_kind: Postfix,
135+
label: "ref",
136+
kind: None,
137+
detail: Some(
138+
"&expr"
139+
),
140+
documentation: None,
141+
lookup: None,
142+
insert_text: Some(
143+
"&bar"
144+
),
145+
insert_text_format: Snippet,
146+
source_range: [76; 76),
147+
text_edit: Some(
148+
TextEdit {
149+
atoms: [
150+
AtomTextEdit {
151+
delete: [72; 76),
152+
insert: ""
153+
}
154+
]
155+
}
156+
)
157+
},
100158
CompletionItem {
101159
completion_kind: Postfix,
102160
label: "while",
103161
kind: None,
104-
detail: None,
162+
detail: Some(
163+
"while expr {}"
164+
),
105165
documentation: None,
106166
lookup: None,
107167
insert_text: Some(

0 commit comments

Comments
 (0)