From 328d123f5baeab8ff9a1f63a6744f6eec89818ab Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 22 Dec 2018 01:37:11 +0300 Subject: specify completion item kind --- crates/ra_analysis/src/completion.rs | 2 +- crates/ra_analysis/src/completion/complete_keyword.rs | 3 ++- crates/ra_analysis/src/completion/complete_snippet.rs | 6 ++++-- crates/ra_analysis/src/completion/completion_item.rs | 18 ++++++++++-------- 4 files changed, 17 insertions(+), 12 deletions(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/completion.rs b/crates/ra_analysis/src/completion.rs index 2d61a3aef..d742d6295 100644 --- a/crates/ra_analysis/src/completion.rs +++ b/crates/ra_analysis/src/completion.rs @@ -18,7 +18,7 @@ use crate::{ }, }; -pub use crate::completion::completion_item::{CompletionItem, InsertText}; +pub use crate::completion::completion_item::{CompletionItem, InsertText, CompletionItemKind}; /// Main entry point for copmletion. We run comletion as a two-phase process. /// diff --git a/crates/ra_analysis/src/completion/complete_keyword.rs b/crates/ra_analysis/src/completion/complete_keyword.rs index 2c7891920..5427fcb11 100644 --- a/crates/ra_analysis/src/completion/complete_keyword.rs +++ b/crates/ra_analysis/src/completion/complete_keyword.rs @@ -5,10 +5,11 @@ use ra_syntax::{ SyntaxKind::*, SyntaxNodeRef, }; -use crate::completion::{CompletionContext, CompletionItem, Completions, CompletionKind}; +use crate::completion::{CompletionContext, CompletionItem, Completions, CompletionKind, CompletionItemKind}; fn keyword(kw: &str, snippet: &str) -> CompletionItem { CompletionItem::new(CompletionKind::Keyword, kw) + .kind(CompletionItemKind::Keyword) .snippet(snippet) .build() } diff --git a/crates/ra_analysis/src/completion/complete_snippet.rs b/crates/ra_analysis/src/completion/complete_snippet.rs index 1feb332b9..91de8ca37 100644 --- a/crates/ra_analysis/src/completion/complete_snippet.rs +++ b/crates/ra_analysis/src/completion/complete_snippet.rs @@ -1,7 +1,9 @@ -use crate::completion::{CompletionItem, Completions, CompletionKind, CompletionContext, completion_item::Builder}; +use crate::completion::{CompletionItem, Completions, CompletionKind, CompletionItemKind, CompletionContext, completion_item::Builder}; fn snippet(label: &str, snippet: &str) -> Builder { - CompletionItem::new(CompletionKind::Snippet, label).snippet(snippet) + CompletionItem::new(CompletionKind::Snippet, label) + .snippet(snippet) + .kind(CompletionItemKind::Keyword) } pub(super) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionContext) { diff --git a/crates/ra_analysis/src/completion/completion_item.rs b/crates/ra_analysis/src/completion/completion_item.rs index 423d5a48b..89fbe62d8 100644 --- a/crates/ra_analysis/src/completion/completion_item.rs +++ b/crates/ra_analysis/src/completion/completion_item.rs @@ -3,13 +3,13 @@ /// `CompletionItem`, use `new` method and the `Builder` struct. #[derive(Debug)] pub struct CompletionItem { + /// Used only internally in tests, to check only specific kind of + /// completion. + completion_kind: CompletionKind, label: String, lookup: Option, snippet: Option, kind: Option, - /// Used only internally in tests, to check only specific kind of - /// completion. - completion_kind: CompletionKind, } pub enum InsertText { @@ -38,10 +38,11 @@ impl CompletionItem { pub(crate) fn new(completion_kind: CompletionKind, label: impl Into) -> Builder { let label = label.into(); Builder { + completion_kind, label, lookup: None, snippet: None, - completion_kind, + kind: None, } } /// What user sees in pop-up in the UI. @@ -73,10 +74,11 @@ impl CompletionItem { /// A helper to make `CompletionItem`s. #[must_use] pub(crate) struct Builder { + completion_kind: CompletionKind, label: String, lookup: Option, snippet: Option, - completion_kind: CompletionKind, + kind: Option, } impl Builder { @@ -89,7 +91,7 @@ impl Builder { label: self.label, lookup: self.lookup, snippet: self.snippet, - kind: None, + kind: self.kind, completion_kind: self.completion_kind, } } @@ -101,8 +103,8 @@ impl Builder { self.snippet = Some(snippet.into()); self } - pub(crate) fn kind(mut self, kind: CompletionKind) -> Builder { - self.completion_kind = kind; + pub(crate) fn kind(mut self, kind: CompletionItemKind) -> Builder { + self.kind = Some(kind); self } } -- cgit v1.2.3