Respect completion resolve server capabilities

Only query for additional edits if the server supports it

Co-Authored-By: Julia Risley <julia@zed.dev>
This commit is contained in:
Kirill Bulatov 2023-08-18 16:03:12 +03:00
parent 8451e7eb7e
commit 269dad5a9c
3 changed files with 17 additions and 4 deletions

View file

@ -4454,10 +4454,20 @@ impl Project {
};
cx.spawn(|this, mut cx| async move {
let additional_text_edits = lang_server
.request::<lsp::request::ResolveCompletionItem>(completion.lsp_completion)
.await?
.additional_text_edits;
let can_resolve = lang_server
.capabilities()
.completion_provider
.as_ref()
.and_then(|options| options.resolve_provider)
.unwrap_or(false);
let additional_text_edits = if can_resolve {
lang_server
.request::<lsp::request::ResolveCompletionItem>(completion.lsp_completion)
.await?
.additional_text_edits
} else {
completion.lsp_completion.additional_text_edits
};
if let Some(edits) = additional_text_edits {
let edits = this
.update(&mut cx, |this, cx| {