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| {