/// completion.
completion_kind: CompletionKind,
label: String,
+ detail: Option<String>,
lookup: Option<String>,
snippet: Option<String>,
kind: Option<CompletionItemKind>,
Builder {
completion_kind,
label,
+ detail: None,
lookup: None,
snippet: None,
kind: None,
pub fn label(&self) -> &str {
&self.label
}
+ /// Short one-line additional information, like a type
+ pub fn detail(&self) -> Option<&str> {
+ self.detail.as_ref().map(|it| it.as_str())
+ }
/// What string is used for filtering.
pub fn lookup(&self) -> &str {
self.lookup
pub(crate) struct Builder {
completion_kind: CompletionKind,
label: String,
+ detail: Option<String>,
lookup: Option<String>,
snippet: Option<String>,
kind: Option<CompletionItemKind>,
pub(crate) fn build(self) -> CompletionItem {
CompletionItem {
label: self.label,
+ detail: self.detail,
lookup: self.lookup,
snippet: self.snippet,
kind: self.kind,
self.kind = Some(kind);
self
}
+ pub(crate) fn detail(mut self, detail: impl Into<String>) -> Builder {
+ self.detail = Some(detail.into());
+ self
+ }
pub(super) fn from_resolution(
mut self,
ctx: &CompletionContext,
fn conv(self) -> <Self as Conv>::Output {
let mut res = ::languageserver_types::CompletionItem {
label: self.label().to_string(),
+ detail: self.detail().map(|it| it.to_string()),
filter_text: Some(self.lookup().to_string()),
kind: self.kind().map(|it| it.conv()),
..Default::default()