diff options
Diffstat (limited to 'crates/ide_completion/src/completions/keyword.rs')
-rw-r--r-- | crates/ide_completion/src/completions/keyword.rs | 44 |
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 | ||
167 | fn add_keyword(ctx: &CompletionContext, acc: &mut Completions, kw: &str, snippet: &str) { | 166 | fn 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 | } |