diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/completion_item.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/completion_item.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index a25b87bee..334449fae 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs | |||
@@ -11,6 +11,7 @@ pub struct CompletionItem { | |||
11 | /// completion. | 11 | /// completion. |
12 | completion_kind: CompletionKind, | 12 | completion_kind: CompletionKind, |
13 | label: String, | 13 | label: String, |
14 | detail: Option<String>, | ||
14 | lookup: Option<String>, | 15 | lookup: Option<String>, |
15 | snippet: Option<String>, | 16 | snippet: Option<String>, |
16 | kind: Option<CompletionItemKind>, | 17 | kind: Option<CompletionItemKind>, |
@@ -51,6 +52,7 @@ impl CompletionItem { | |||
51 | Builder { | 52 | Builder { |
52 | completion_kind, | 53 | completion_kind, |
53 | label, | 54 | label, |
55 | detail: None, | ||
54 | lookup: None, | 56 | lookup: None, |
55 | snippet: None, | 57 | snippet: None, |
56 | kind: None, | 58 | kind: None, |
@@ -60,6 +62,10 @@ impl CompletionItem { | |||
60 | pub fn label(&self) -> &str { | 62 | pub fn label(&self) -> &str { |
61 | &self.label | 63 | &self.label |
62 | } | 64 | } |
65 | /// Short one-line additional information, like a type | ||
66 | pub fn detail(&self) -> Option<&str> { | ||
67 | self.detail.as_ref().map(|it| it.as_str()) | ||
68 | } | ||
63 | /// What string is used for filtering. | 69 | /// What string is used for filtering. |
64 | pub fn lookup(&self) -> &str { | 70 | pub fn lookup(&self) -> &str { |
65 | self.lookup | 71 | self.lookup |
@@ -87,6 +93,7 @@ impl CompletionItem { | |||
87 | pub(crate) struct Builder { | 93 | pub(crate) struct Builder { |
88 | completion_kind: CompletionKind, | 94 | completion_kind: CompletionKind, |
89 | label: String, | 95 | label: String, |
96 | detail: Option<String>, | ||
90 | lookup: Option<String>, | 97 | lookup: Option<String>, |
91 | snippet: Option<String>, | 98 | snippet: Option<String>, |
92 | kind: Option<CompletionItemKind>, | 99 | kind: Option<CompletionItemKind>, |
@@ -100,6 +107,7 @@ impl Builder { | |||
100 | pub(crate) fn build(self) -> CompletionItem { | 107 | pub(crate) fn build(self) -> CompletionItem { |
101 | CompletionItem { | 108 | CompletionItem { |
102 | label: self.label, | 109 | label: self.label, |
110 | detail: self.detail, | ||
103 | lookup: self.lookup, | 111 | lookup: self.lookup, |
104 | snippet: self.snippet, | 112 | snippet: self.snippet, |
105 | kind: self.kind, | 113 | kind: self.kind, |
@@ -118,6 +126,14 @@ impl Builder { | |||
118 | self.kind = Some(kind); | 126 | self.kind = Some(kind); |
119 | self | 127 | self |
120 | } | 128 | } |
129 | #[allow(unused)] | ||
130 | pub(crate) fn detail(self, detail: impl Into<String>) -> Builder { | ||
131 | self.set_detail(Some(detail)) | ||
132 | } | ||
133 | pub(crate) fn set_detail(mut self, detail: Option<impl Into<String>>) -> Builder { | ||
134 | self.detail = detail.map(Into::into); | ||
135 | self | ||
136 | } | ||
121 | pub(super) fn from_resolution( | 137 | pub(super) fn from_resolution( |
122 | mut self, | 138 | mut self, |
123 | ctx: &CompletionContext, | 139 | ctx: &CompletionContext, |
@@ -227,6 +243,9 @@ impl Completions { | |||
227 | } else { | 243 | } else { |
228 | res.push_str(&c.label); | 244 | res.push_str(&c.label); |
229 | } | 245 | } |
246 | if let Some(detail) = &c.detail { | ||
247 | res.push_str(&format!(" {:?}", detail)); | ||
248 | } | ||
230 | if let Some(snippet) = &c.snippet { | 249 | if let Some(snippet) = &c.snippet { |
231 | res.push_str(&format!(" {:?}", snippet)); | 250 | res.push_str(&format!(" {:?}", snippet)); |
232 | } | 251 | } |