From 269dad5a9c23cbe994459cccc3ef5ac1122a9486 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Fri, 18 Aug 2023 16:03:12 +0300 Subject: [PATCH] Respect completion resolve server capabilities Only query for additional edits if the server supports it Co-Authored-By: Julia Risley --- crates/collab/src/tests/integration_tests.rs | 1 + crates/editor/src/editor_tests.rs | 2 ++ crates/project/src/project.rs | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/crates/collab/src/tests/integration_tests.rs b/crates/collab/src/tests/integration_tests.rs index a03e2ff16fc2fa325aeff79c058ded7c7dc5575c..9bee8d434cd9ccb6d0fa252e2badc49be99a54d4 100644 --- a/crates/collab/src/tests/integration_tests.rs +++ b/crates/collab/src/tests/integration_tests.rs @@ -4163,6 +4163,7 @@ async fn test_collaborating_with_completion( capabilities: lsp::ServerCapabilities { completion_provider: Some(lsp::CompletionOptions { trigger_characters: Some(vec![".".to_string()]), + resolve_provider: Some(true), ..Default::default() }), ..Default::default() diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index ec1cc1249895881485489b56474c61aafd78d31d..e031edf538db18be53b79af0eb80ec820f499fa0 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -5237,6 +5237,7 @@ async fn test_completion(cx: &mut gpui::TestAppContext) { lsp::ServerCapabilities { completion_provider: Some(lsp::CompletionOptions { trigger_characters: Some(vec![".".to_string(), ":".to_string()]), + resolve_provider: Some(true), ..Default::default() }), ..Default::default() @@ -7528,6 +7529,7 @@ async fn test_completions_with_additional_edits(cx: &mut gpui::TestAppContext) { lsp::ServerCapabilities { completion_provider: Some(lsp::CompletionOptions { trigger_characters: Some(vec![".".to_string()]), + resolve_provider: Some(true), ..Default::default() }), ..Default::default() diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 933f259700964df58a6c303a27090127f1ff2261..adb067b40397c96259cc5fdcdf8796bcc5939311 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -4454,10 +4454,20 @@ impl Project { }; cx.spawn(|this, mut cx| async move { - let additional_text_edits = lang_server - .request::(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::(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| {