diff options
Diffstat (limited to 'crates/completion/src/render')
-rw-r--r-- | crates/completion/src/render/enum_variant.rs | 14 | ||||
-rw-r--r-- | crates/completion/src/render/function.rs | 16 | ||||
-rw-r--r-- | crates/completion/src/render/macro_.rs | 17 |
3 files changed, 17 insertions, 30 deletions
diff --git a/crates/completion/src/render/enum_variant.rs b/crates/completion/src/render/enum_variant.rs index 5d4fbb641..f4bd02f25 100644 --- a/crates/completion/src/render/enum_variant.rs +++ b/crates/completion/src/render/enum_variant.rs | |||
@@ -1,24 +1,23 @@ | |||
1 | //! Renderer for `enum` variants. | 1 | //! Renderer for `enum` variants. |
2 | 2 | ||
3 | use hir::{HasAttrs, HirDisplay, ModPath, StructKind}; | 3 | use hir::{HasAttrs, HirDisplay, ModPath, StructKind}; |
4 | use ide_helpers::insert_use::{ImportScope, MergeBehaviour}; | ||
5 | use itertools::Itertools; | 4 | use itertools::Itertools; |
6 | use test_utils::mark; | 5 | use test_utils::mark; |
7 | 6 | ||
8 | use crate::{ | 7 | use crate::{ |
9 | item::{CompletionItem, CompletionItemKind, CompletionKind}, | 8 | item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd}, |
10 | render::{builder_ext::Params, RenderContext}, | 9 | render::{builder_ext::Params, RenderContext}, |
11 | }; | 10 | }; |
12 | 11 | ||
13 | pub(crate) fn render_enum_variant<'a>( | 12 | pub(crate) fn render_enum_variant<'a>( |
14 | ctx: RenderContext<'a>, | 13 | ctx: RenderContext<'a>, |
15 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | 14 | import_to_add: Option<ImportToAdd>, |
16 | local_name: Option<String>, | 15 | local_name: Option<String>, |
17 | variant: hir::EnumVariant, | 16 | variant: hir::EnumVariant, |
18 | path: Option<ModPath>, | 17 | path: Option<ModPath>, |
19 | ) -> CompletionItem { | 18 | ) -> CompletionItem { |
20 | let _p = profile::span("render_enum_variant"); | 19 | let _p = profile::span("render_enum_variant"); |
21 | EnumVariantRender::new(ctx, local_name, variant, path).render(import_data) | 20 | EnumVariantRender::new(ctx, local_name, variant, path).render(import_to_add) |
22 | } | 21 | } |
23 | 22 | ||
24 | #[derive(Debug)] | 23 | #[derive(Debug)] |
@@ -63,10 +62,7 @@ impl<'a> EnumVariantRender<'a> { | |||
63 | } | 62 | } |
64 | } | 63 | } |
65 | 64 | ||
66 | fn render( | 65 | fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem { |
67 | self, | ||
68 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | ||
69 | ) -> CompletionItem { | ||
70 | let mut builder = CompletionItem::new( | 66 | let mut builder = CompletionItem::new( |
71 | CompletionKind::Reference, | 67 | CompletionKind::Reference, |
72 | self.ctx.source_range(), | 68 | self.ctx.source_range(), |
@@ -75,7 +71,7 @@ impl<'a> EnumVariantRender<'a> { | |||
75 | .kind(CompletionItemKind::EnumVariant) | 71 | .kind(CompletionItemKind::EnumVariant) |
76 | .set_documentation(self.variant.docs(self.ctx.db())) | 72 | .set_documentation(self.variant.docs(self.ctx.db())) |
77 | .set_deprecated(self.ctx.is_deprecated(self.variant)) | 73 | .set_deprecated(self.ctx.is_deprecated(self.variant)) |
78 | .import_data(import_data) | 74 | .add_import(import_to_add) |
79 | .detail(self.detail()); | 75 | .detail(self.detail()); |
80 | 76 | ||
81 | if self.variant_kind == StructKind::Tuple { | 77 | if self.variant_kind == StructKind::Tuple { |
diff --git a/crates/completion/src/render/function.rs b/crates/completion/src/render/function.rs index 07e99058a..542383d7e 100644 --- a/crates/completion/src/render/function.rs +++ b/crates/completion/src/render/function.rs | |||
@@ -1,22 +1,21 @@ | |||
1 | //! Renderer for function calls. | 1 | //! Renderer for function calls. |
2 | 2 | ||
3 | use hir::{HasSource, ModPath, Type}; | 3 | use hir::{HasSource, Type}; |
4 | use ide_helpers::insert_use::{ImportScope, MergeBehaviour}; | ||
5 | use syntax::{ast::Fn, display::function_declaration}; | 4 | use syntax::{ast::Fn, display::function_declaration}; |
6 | 5 | ||
7 | use crate::{ | 6 | use crate::{ |
8 | item::{CompletionItem, CompletionItemKind, CompletionKind}, | 7 | item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd}, |
9 | render::{builder_ext::Params, RenderContext}, | 8 | render::{builder_ext::Params, RenderContext}, |
10 | }; | 9 | }; |
11 | 10 | ||
12 | pub(crate) fn render_fn<'a>( | 11 | pub(crate) fn render_fn<'a>( |
13 | ctx: RenderContext<'a>, | 12 | ctx: RenderContext<'a>, |
14 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | 13 | import_to_add: Option<ImportToAdd>, |
15 | local_name: Option<String>, | 14 | local_name: Option<String>, |
16 | fn_: hir::Function, | 15 | fn_: hir::Function, |
17 | ) -> CompletionItem { | 16 | ) -> CompletionItem { |
18 | let _p = profile::span("render_fn"); | 17 | let _p = profile::span("render_fn"); |
19 | FunctionRender::new(ctx, local_name, fn_).render(import_data) | 18 | FunctionRender::new(ctx, local_name, fn_).render(import_to_add) |
20 | } | 19 | } |
21 | 20 | ||
22 | #[derive(Debug)] | 21 | #[derive(Debug)] |
@@ -39,10 +38,7 @@ impl<'a> FunctionRender<'a> { | |||
39 | FunctionRender { ctx, name, fn_, ast_node } | 38 | FunctionRender { ctx, name, fn_, ast_node } |
40 | } | 39 | } |
41 | 40 | ||
42 | fn render( | 41 | fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem { |
43 | self, | ||
44 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | ||
45 | ) -> CompletionItem { | ||
46 | let params = self.params(); | 42 | let params = self.params(); |
47 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone()) | 43 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone()) |
48 | .kind(self.kind()) | 44 | .kind(self.kind()) |
@@ -50,7 +46,7 @@ impl<'a> FunctionRender<'a> { | |||
50 | .set_deprecated(self.ctx.is_deprecated(self.fn_)) | 46 | .set_deprecated(self.ctx.is_deprecated(self.fn_)) |
51 | .detail(self.detail()) | 47 | .detail(self.detail()) |
52 | .add_call_parens(self.ctx.completion, self.name, params) | 48 | .add_call_parens(self.ctx.completion, self.name, params) |
53 | .import_data(import_data) | 49 | .add_import(import_to_add) |
54 | .build() | 50 | .build() |
55 | } | 51 | } |
56 | 52 | ||
diff --git a/crates/completion/src/render/macro_.rs b/crates/completion/src/render/macro_.rs index b1284f201..b4ab32c6e 100644 --- a/crates/completion/src/render/macro_.rs +++ b/crates/completion/src/render/macro_.rs | |||
@@ -1,24 +1,22 @@ | |||
1 | //! Renderer for macro invocations. | 1 | //! Renderer for macro invocations. |
2 | 2 | ||
3 | use hir::{Documentation, HasSource, ModPath}; | 3 | use hir::{Documentation, HasSource}; |
4 | use ide_helpers::insert_use::{ImportScope, MergeBehaviour}; | ||
5 | use syntax::display::macro_label; | 4 | use syntax::display::macro_label; |
6 | use test_utils::mark; | 5 | use test_utils::mark; |
7 | 6 | ||
8 | use crate::{ | 7 | use crate::{ |
9 | item::{CompletionItem, CompletionItemKind, CompletionKind}, | 8 | item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd}, |
10 | render::RenderContext, | 9 | render::RenderContext, |
11 | }; | 10 | }; |
12 | 11 | ||
13 | pub(crate) fn render_macro<'a>( | 12 | pub(crate) fn render_macro<'a>( |
14 | ctx: RenderContext<'a>, | 13 | ctx: RenderContext<'a>, |
15 | // TODO kb add some object instead of a tuple? | 14 | import_to_add: Option<ImportToAdd>, |
16 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | ||
17 | name: String, | 15 | name: String, |
18 | macro_: hir::MacroDef, | 16 | macro_: hir::MacroDef, |
19 | ) -> Option<CompletionItem> { | 17 | ) -> Option<CompletionItem> { |
20 | let _p = profile::span("render_macro"); | 18 | let _p = profile::span("render_macro"); |
21 | MacroRender::new(ctx, name, macro_).render(import_data) | 19 | MacroRender::new(ctx, name, macro_).render(import_to_add) |
22 | } | 20 | } |
23 | 21 | ||
24 | #[derive(Debug)] | 22 | #[derive(Debug)] |
@@ -40,10 +38,7 @@ impl<'a> MacroRender<'a> { | |||
40 | MacroRender { ctx, name, macro_, docs, bra, ket } | 38 | MacroRender { ctx, name, macro_, docs, bra, ket } |
41 | } | 39 | } |
42 | 40 | ||
43 | fn render( | 41 | fn render(&self, import_to_add: Option<ImportToAdd>) -> Option<CompletionItem> { |
44 | &self, | ||
45 | import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, | ||
46 | ) -> Option<CompletionItem> { | ||
47 | // FIXME: Currently proc-macro do not have ast-node, | 42 | // FIXME: Currently proc-macro do not have ast-node, |
48 | // such that it does not have source | 43 | // such that it does not have source |
49 | if self.macro_.is_proc_macro() { | 44 | if self.macro_.is_proc_macro() { |
@@ -55,7 +50,7 @@ impl<'a> MacroRender<'a> { | |||
55 | .kind(CompletionItemKind::Macro) | 50 | .kind(CompletionItemKind::Macro) |
56 | .set_documentation(self.docs.clone()) | 51 | .set_documentation(self.docs.clone()) |
57 | .set_deprecated(self.ctx.is_deprecated(self.macro_)) | 52 | .set_deprecated(self.ctx.is_deprecated(self.macro_)) |
58 | .import_data(import_data) | 53 | .add_import(import_to_add) |
59 | .detail(self.detail()); | 54 | .detail(self.detail()); |
60 | 55 | ||
61 | let needs_bang = self.needs_bang(); | 56 | let needs_bang = self.needs_bang(); |