From 55ba80ddd142197aea68c4ff71959bf441fc2523 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Fri, 14 Jun 2024 13:49:08 +0200 Subject: [PATCH] lsp: Add support for label_details in completions (#13043) This fixes an issue reported by @Spoutnik97 in https://github.com/zed-industries/zed/issues/12711#issuecomment-2163785111 - vtsls returns auxiliary docs via .label_details and not plain .details field. Release Notes: - Improved quality of auxiliary details in completions returned by VTSLS --- crates/languages/src/vtsls.rs | 13 ++++++++++--- crates/lsp/src/lsp.rs | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/languages/src/vtsls.rs b/crates/languages/src/vtsls.rs index 4c23362a99d58be520557ef86c9630fed4f4ddf4..cccbccfdbb462ce1cdd0bc4e49b9f66280e4bdcd 100644 --- a/crates/languages/src/vtsls.rs +++ b/crates/languages/src/vtsls.rs @@ -138,9 +138,16 @@ impl LspAdapter for VtslsLspAdapter { _ => None, }?; - let text = match &item.detail { - Some(detail) => format!("{} {}", item.label, detail), - None => item.label.clone(), + let text = if let Some(description) = item + .label_details + .as_ref() + .and_then(|label_details| label_details.description.as_ref()) + { + format!("{} {}", item.label, description) + } else if let Some(detail) = &item.detail { + format!("{} {}", item.label, detail) + } else { + item.label.clone() }; Some(language::CodeLabel { diff --git a/crates/lsp/src/lsp.rs b/crates/lsp/src/lsp.rs index 3e3ac2557f7f39d9572606efd32dfba3b9f26f41..256b13a128381f0ba08c2a4ba3ebb84a0b329c72 100644 --- a/crates/lsp/src/lsp.rs +++ b/crates/lsp/src/lsp.rs @@ -660,6 +660,7 @@ impl LanguageServer { ], }), insert_replace_support: Some(true), + label_details_support: Some(true), ..Default::default() }), completion_list: Some(CompletionListCapability { @@ -670,6 +671,7 @@ impl LanguageServer { "data".to_owned(), ]), }), + context_support: Some(true), ..Default::default() }), rename: Some(RenameClientCapabilities {