diff options
author | Igor Aleksanov <[email protected]> | 2020-10-25 07:59:15 +0000 |
---|---|---|
committer | Igor Aleksanov <[email protected]> | 2020-10-25 07:59:15 +0000 |
commit | 19c10672023ead0c1d64486154b6c4145b649568 (patch) | |
tree | 691d5fe8dcfbca897c05cde78a1a0f9c99d1afbb /crates/completion/src/presentation.rs | |
parent | bf84e4958ee31c59e5b78f60059d69a73ef659bb (diff) |
Reorganize completions structure
Diffstat (limited to 'crates/completion/src/presentation.rs')
-rw-r--r-- | crates/completion/src/presentation.rs | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/crates/completion/src/presentation.rs b/crates/completion/src/presentation.rs index 0a6f5a1ea..38bb8fa3e 100644 --- a/crates/completion/src/presentation.rs +++ b/crates/completion/src/presentation.rs | |||
@@ -11,8 +11,8 @@ use crate::{ | |||
11 | CompletionScore, | 11 | CompletionScore, |
12 | RootDatabase, | 12 | RootDatabase, |
13 | { | 13 | { |
14 | completion_item::Builder, CompletionContext, CompletionItem, CompletionItemKind, | 14 | item::Builder, CompletionContext, CompletionItem, CompletionItemKind, CompletionKind, |
15 | CompletionKind, Completions, | 15 | Completions, |
16 | }, | 16 | }, |
17 | }; | 17 | }; |
18 | 18 | ||
@@ -20,7 +20,7 @@ impl Completions { | |||
20 | pub(crate) fn add_field(&mut self, ctx: &CompletionContext, field: hir::Field, ty: &Type) { | 20 | pub(crate) fn add_field(&mut self, ctx: &CompletionContext, field: hir::Field, ty: &Type) { |
21 | let is_deprecated = is_deprecated(field, ctx.db); | 21 | let is_deprecated = is_deprecated(field, ctx.db); |
22 | let name = field.name(ctx.db); | 22 | let name = field.name(ctx.db); |
23 | let mut completion_item = | 23 | let mut item = |
24 | CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.to_string()) | 24 | CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.to_string()) |
25 | .kind(CompletionItemKind::Field) | 25 | .kind(CompletionItemKind::Field) |
26 | .detail(ty.display(ctx.db).to_string()) | 26 | .detail(ty.display(ctx.db).to_string()) |
@@ -28,10 +28,10 @@ impl Completions { | |||
28 | .set_deprecated(is_deprecated); | 28 | .set_deprecated(is_deprecated); |
29 | 29 | ||
30 | if let Some(score) = compute_score(ctx, &ty, &name.to_string()) { | 30 | if let Some(score) = compute_score(ctx, &ty, &name.to_string()) { |
31 | completion_item = completion_item.set_score(score); | 31 | item = item.set_score(score); |
32 | } | 32 | } |
33 | 33 | ||
34 | completion_item.add_to(self); | 34 | item.add_to(self); |
35 | } | 35 | } |
36 | 36 | ||
37 | pub(crate) fn add_tuple_field(&mut self, ctx: &CompletionContext, field: usize, ty: &Type) { | 37 | pub(crate) fn add_tuple_field(&mut self, ctx: &CompletionContext, field: usize, ty: &Type) { |
@@ -98,12 +98,11 @@ impl Completions { | |||
98 | _ => None, | 98 | _ => None, |
99 | }; | 99 | }; |
100 | 100 | ||
101 | let mut completion_item = | 101 | let mut item = CompletionItem::new(completion_kind, ctx.source_range(), local_name.clone()); |
102 | CompletionItem::new(completion_kind, ctx.source_range(), local_name.clone()); | ||
103 | if let ScopeDef::Local(local) = resolution { | 102 | if let ScopeDef::Local(local) = resolution { |
104 | let ty = local.ty(ctx.db); | 103 | let ty = local.ty(ctx.db); |
105 | if !ty.is_unknown() { | 104 | if !ty.is_unknown() { |
106 | completion_item = completion_item.detail(ty.display(ctx.db).to_string()); | 105 | item = item.detail(ty.display(ctx.db).to_string()); |
107 | } | 106 | } |
108 | }; | 107 | }; |
109 | 108 | ||
@@ -114,7 +113,7 @@ impl Completions { | |||
114 | if let Some(score) = | 113 | if let Some(score) = |
115 | compute_score_from_active(&active_type, &active_name, &ty, &local_name) | 114 | compute_score_from_active(&active_type, &active_name, &ty, &local_name) |
116 | { | 115 | { |
117 | completion_item = completion_item.set_score(score); | 116 | item = item.set_score(score); |
118 | } | 117 | } |
119 | ref_match = refed_type_matches(&active_type, &active_name, &ty, &local_name); | 118 | ref_match = refed_type_matches(&active_type, &active_name, &ty, &local_name); |
120 | } | 119 | } |
@@ -130,7 +129,7 @@ impl Completions { | |||
130 | }; | 129 | }; |
131 | if has_non_default_type_params { | 130 | if has_non_default_type_params { |
132 | mark::hit!(inserts_angle_brackets_for_generics); | 131 | mark::hit!(inserts_angle_brackets_for_generics); |
133 | completion_item = completion_item | 132 | item = item |
134 | .lookup_by(local_name.clone()) | 133 | .lookup_by(local_name.clone()) |
135 | .label(format!("{}<…>", local_name)) | 134 | .label(format!("{}<…>", local_name)) |
136 | .insert_snippet(cap, format!("{}<$0>", local_name)); | 135 | .insert_snippet(cap, format!("{}<$0>", local_name)); |
@@ -138,7 +137,7 @@ impl Completions { | |||
138 | } | 137 | } |
139 | } | 138 | } |
140 | 139 | ||
141 | completion_item.kind(kind).set_documentation(docs).set_ref_match(ref_match).add_to(self) | 140 | item.kind(kind).set_documentation(docs).set_ref_match(ref_match).add_to(self) |
142 | } | 141 | } |
143 | 142 | ||
144 | pub(crate) fn add_macro( | 143 | pub(crate) fn add_macro( |
@@ -506,7 +505,7 @@ mod tests { | |||
506 | use test_utils::mark; | 505 | use test_utils::mark; |
507 | 506 | ||
508 | use crate::{ | 507 | use crate::{ |
509 | test_utils::{check_edit, check_edit_with_config, do_completion, get_all_completion_items}, | 508 | test_utils::{check_edit, check_edit_with_config, do_completion, get_all_items}, |
510 | CompletionConfig, CompletionKind, CompletionScore, | 509 | CompletionConfig, CompletionKind, CompletionScore, |
511 | }; | 510 | }; |
512 | 511 | ||
@@ -524,7 +523,7 @@ mod tests { | |||
524 | } | 523 | } |
525 | } | 524 | } |
526 | 525 | ||
527 | let mut completions = get_all_completion_items(CompletionConfig::default(), ra_fixture); | 526 | let mut completions = get_all_items(CompletionConfig::default(), ra_fixture); |
528 | completions.sort_by_key(|it| (Reverse(it.score()), it.label().to_string())); | 527 | completions.sort_by_key(|it| (Reverse(it.score()), it.label().to_string())); |
529 | let actual = completions | 528 | let actual = completions |
530 | .into_iter() | 529 | .into_iter() |
@@ -661,7 +660,7 @@ fn main() { let _: m::Spam = S<|> } | |||
661 | } | 660 | } |
662 | 661 | ||
663 | #[test] | 662 | #[test] |
664 | fn sets_deprecated_flag_in_completion_items() { | 663 | fn sets_deprecated_flag_in_items() { |
665 | check( | 664 | check( |
666 | r#" | 665 | r#" |
667 | #[deprecated] | 666 | #[deprecated] |