diff options
author | Jeremy A. Kolb <[email protected]> | 2019-01-23 21:22:10 +0000 |
---|---|---|
committer | Jeremy A. Kolb <[email protected]> | 2019-01-23 21:32:04 +0000 |
commit | 576625f0a1c6e54075d173db7e691d75077ca677 (patch) | |
tree | 72c1fadf48265e7f5355eb72586de4bcdab43cec /crates/ra_ide_api/src | |
parent | 6a6ce2bc959c346aed7a98c8509d1aa3d19ec8a9 (diff) |
Add way of getting docs from the code model and use for completion
Diffstat (limited to 'crates/ra_ide_api/src')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_path.rs | 5 | ||||
-rw-r--r-- | crates/ra_ide_api/src/completion/completion_item.rs | 13 |
2 files changed, 11 insertions, 7 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index 6bed299d2..aeb226847 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs | |||
@@ -2,6 +2,8 @@ use crate::{ | |||
2 | completion::{CompletionItem, CompletionItemKind, Completions, CompletionKind, CompletionContext}, | 2 | completion::{CompletionItem, CompletionItemKind, Completions, CompletionKind, CompletionContext}, |
3 | }; | 3 | }; |
4 | 4 | ||
5 | use hir::Docs; | ||
6 | |||
5 | pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { | 7 | pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { |
6 | let (path, module) = match (&ctx.path_prefix, &ctx.module) { | 8 | let (path, module) = match (&ctx.path_prefix, &ctx.module) { |
7 | (Some(path), Some(module)) => (path.clone(), module), | 9 | (Some(path), Some(module)) => (path.clone(), module), |
@@ -27,13 +29,14 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { | |||
27 | hir::Def::Enum(e) => { | 29 | hir::Def::Enum(e) => { |
28 | e.variants(ctx.db) | 30 | e.variants(ctx.db) |
29 | .into_iter() | 31 | .into_iter() |
30 | .for_each(|(variant_name, _variant)| { | 32 | .for_each(|(variant_name, variant)| { |
31 | CompletionItem::new( | 33 | CompletionItem::new( |
32 | CompletionKind::Reference, | 34 | CompletionKind::Reference, |
33 | ctx.source_range(), | 35 | ctx.source_range(), |
34 | variant_name.to_string(), | 36 | variant_name.to_string(), |
35 | ) | 37 | ) |
36 | .kind(CompletionItemKind::EnumVariant) | 38 | .kind(CompletionItemKind::EnumVariant) |
39 | .set_documentation(variant.docs(ctx.db)) | ||
37 | .add_to(acc) | 40 | .add_to(acc) |
38 | }); | 41 | }); |
39 | } | 42 | } |
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index e3bf82304..8e0be4c4b 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs | |||
@@ -1,4 +1,4 @@ | |||
1 | use hir::PerNs; | 1 | use hir::{Docs, Documentation, PerNs}; |
2 | 2 | ||
3 | use crate::completion::completion_context::CompletionContext; | 3 | use crate::completion::completion_context::CompletionContext; |
4 | use ra_syntax::{ | 4 | use ra_syntax::{ |
@@ -19,7 +19,7 @@ pub struct CompletionItem { | |||
19 | label: String, | 19 | label: String, |
20 | kind: Option<CompletionItemKind>, | 20 | kind: Option<CompletionItemKind>, |
21 | detail: Option<String>, | 21 | detail: Option<String>, |
22 | documentation: Option<String>, | 22 | documentation: Option<Documentation>, |
23 | lookup: Option<String>, | 23 | lookup: Option<String>, |
24 | insert_text: Option<String>, | 24 | insert_text: Option<String>, |
25 | insert_text_format: InsertTextFormat, | 25 | insert_text_format: InsertTextFormat, |
@@ -98,7 +98,7 @@ impl CompletionItem { | |||
98 | } | 98 | } |
99 | /// A doc-comment | 99 | /// A doc-comment |
100 | pub fn documentation(&self) -> Option<&str> { | 100 | pub fn documentation(&self) -> Option<&str> { |
101 | self.documentation.as_ref().map(|it| it.as_str()) | 101 | self.documentation.as_ref().map(|it| it.contents()) |
102 | } | 102 | } |
103 | /// What string is used for filtering. | 103 | /// What string is used for filtering. |
104 | pub fn lookup(&self) -> &str { | 104 | pub fn lookup(&self) -> &str { |
@@ -137,7 +137,7 @@ pub(crate) struct Builder { | |||
137 | insert_text: Option<String>, | 137 | insert_text: Option<String>, |
138 | insert_text_format: InsertTextFormat, | 138 | insert_text_format: InsertTextFormat, |
139 | detail: Option<String>, | 139 | detail: Option<String>, |
140 | documentation: Option<String>, | 140 | documentation: Option<Documentation>, |
141 | lookup: Option<String>, | 141 | lookup: Option<String>, |
142 | kind: Option<CompletionItemKind>, | 142 | kind: Option<CompletionItemKind>, |
143 | text_edit: Option<TextEdit>, | 143 | text_edit: Option<TextEdit>, |
@@ -197,10 +197,10 @@ impl Builder { | |||
197 | self | 197 | self |
198 | } | 198 | } |
199 | #[allow(unused)] | 199 | #[allow(unused)] |
200 | pub(crate) fn documentation(self, docs: impl Into<String>) -> Builder { | 200 | pub(crate) fn documentation(self, docs: Documentation) -> Builder { |
201 | self.set_documentation(Some(docs)) | 201 | self.set_documentation(Some(docs)) |
202 | } | 202 | } |
203 | pub(crate) fn set_documentation(mut self, docs: Option<impl Into<String>>) -> Builder { | 203 | pub(crate) fn set_documentation(mut self, docs: Option<Documentation>) -> Builder { |
204 | self.documentation = docs.map(Into::into); | 204 | self.documentation = docs.map(Into::into); |
205 | self | 205 | self |
206 | } | 206 | } |
@@ -265,6 +265,7 @@ impl Builder { | |||
265 | } | 265 | } |
266 | self.insert_text_format = InsertTextFormat::Snippet; | 266 | self.insert_text_format = InsertTextFormat::Snippet; |
267 | } | 267 | } |
268 | |||
268 | if let Some(docs) = function.docs(ctx.db) { | 269 | if let Some(docs) = function.docs(ctx.db) { |
269 | self.documentation = Some(docs); | 270 | self.documentation = Some(docs); |
270 | } | 271 | } |