Change summary
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(-)
Detailed changes
@@ -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()
@@ -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()
@@ -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| {