aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/completions/keyword.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-03-12 08:41:16 +0000
committerGitHub <[email protected]>2021-03-12 08:41:16 +0000
commitc01ef6eabab1fa70d3fdfed9c565fadec9f0a5ed (patch)
tree37160de8384855fd5fadce3ca4a3de4dacdf98b8 /crates/ide_completion/src/completions/keyword.rs
parentdb6364fecc2b0e9a95d9aaece820a86265b4cb4f (diff)
parent99c4a41cd1a9f9ef0ee4f067f0069a23123b949a (diff)
Merge #7974
7974: use references in CompletionItem's builder r=matklad a=yonip23 @matklad This is a follow up to [this pr](https://github.com/rust-analyzer/rust-analyzer/pull/7973) Co-authored-by: yonip23 <[email protected]>
Diffstat (limited to 'crates/ide_completion/src/completions/keyword.rs')
-rw-r--r--crates/ide_completion/src/completions/keyword.rs44
1 files changed, 23 insertions, 21 deletions
diff --git a/crates/ide_completion/src/completions/keyword.rs b/crates/ide_completion/src/completions/keyword.rs
index 80aa9fb06..aa3be712d 100644
--- a/crates/ide_completion/src/completions/keyword.rs
+++ b/crates/ide_completion/src/completions/keyword.rs
@@ -12,21 +12,21 @@ pub(crate) fn complete_use_tree_keyword(acc: &mut Completions, ctx: &CompletionC
12 12
13 if ctx.use_item_syntax.is_some() { 13 if ctx.use_item_syntax.is_some() {
14 if ctx.path_qual.is_none() { 14 if ctx.path_qual.is_none() {
15 CompletionItem::new(CompletionKind::Keyword, source_range, "crate::") 15 let mut crate_builder =
16 .kind(CompletionItemKind::Keyword) 16 CompletionItem::new(CompletionKind::Keyword, source_range, "crate::");
17 .insert_text("crate::") 17 crate_builder.kind(CompletionItemKind::Keyword).insert_text("crate::");
18 .add_to(acc); 18 crate_builder.add_to(acc);
19 } 19 }
20 CompletionItem::new(CompletionKind::Keyword, source_range, "self") 20 let mut self_builder = CompletionItem::new(CompletionKind::Keyword, source_range, "self");
21 .kind(CompletionItemKind::Keyword) 21 self_builder.kind(CompletionItemKind::Keyword);
22 .add_to(acc); 22 self_builder.add_to(acc);
23 if iter::successors(ctx.path_qual.clone(), |p| p.qualifier()) 23 if iter::successors(ctx.path_qual.clone(), |p| p.qualifier())
24 .all(|p| p.segment().and_then(|s| s.super_token()).is_some()) 24 .all(|p| p.segment().and_then(|s| s.super_token()).is_some())
25 { 25 {
26 CompletionItem::new(CompletionKind::Keyword, source_range, "super::") 26 let mut super_builder =
27 .kind(CompletionItemKind::Keyword) 27 CompletionItem::new(CompletionKind::Keyword, source_range, "super::");
28 .insert_text("super::") 28 super_builder.kind(CompletionItemKind::Keyword).insert_text("super::");
29 .add_to(acc); 29 super_builder.add_to(acc);
30 } 30 }
31 } 31 }
32 32
@@ -34,11 +34,10 @@ pub(crate) fn complete_use_tree_keyword(acc: &mut Completions, ctx: &CompletionC
34 if let Some(receiver) = &ctx.dot_receiver { 34 if let Some(receiver) = &ctx.dot_receiver {
35 if let Some(ty) = ctx.sema.type_of_expr(receiver) { 35 if let Some(ty) = ctx.sema.type_of_expr(receiver) {
36 if ty.impls_future(ctx.db) { 36 if ty.impls_future(ctx.db) {
37 CompletionItem::new(CompletionKind::Keyword, ctx.source_range(), "await") 37 let mut builder =
38 .kind(CompletionItemKind::Keyword) 38 CompletionItem::new(CompletionKind::Keyword, ctx.source_range(), "await");
39 .detail("expr.await") 39 builder.kind(CompletionItemKind::Keyword).detail("expr.await").insert_text("await");
40 .insert_text("await") 40 builder.add_to(acc);
41 .add_to(acc);
42 } 41 }
43 }; 42 };
44 } 43 }
@@ -165,9 +164,10 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte
165} 164}
166 165
167fn add_keyword(ctx: &CompletionContext, acc: &mut Completions, kw: &str, snippet: &str) { 166fn add_keyword(ctx: &CompletionContext, acc: &mut Completions, kw: &str, snippet: &str) {
168 let builder = CompletionItem::new(CompletionKind::Keyword, ctx.source_range(), kw) 167 let mut builder = CompletionItem::new(CompletionKind::Keyword, ctx.source_range(), kw);
169 .kind(CompletionItemKind::Keyword); 168 builder.kind(CompletionItemKind::Keyword);
170 let builder = match ctx.config.snippet_cap { 169
170 match ctx.config.snippet_cap {
171 Some(cap) => { 171 Some(cap) => {
172 let tmp; 172 let tmp;
173 let snippet = if snippet.ends_with('}') && ctx.incomplete_let { 173 let snippet = if snippet.ends_with('}') && ctx.incomplete_let {
@@ -177,9 +177,11 @@ fn add_keyword(ctx: &CompletionContext, acc: &mut Completions, kw: &str, snippet
177 } else { 177 } else {
178 snippet 178 snippet
179 }; 179 };
180 builder.insert_snippet(cap, snippet) 180 builder.insert_snippet(cap, snippet);
181 }
182 None => {
183 builder.insert_text(if snippet.contains('$') { kw } else { snippet });
181 } 184 }
182 None => builder.insert_text(if snippet.contains('$') { kw } else { snippet }),
183 }; 185 };
184 acc.add(builder.build()); 186 acc.add(builder.build());
185} 187}