Respect completion resolve server capabilities (#2858)
Only query for additional edits if the server supports it Release Notes: - N/A
This commit is contained in:
commit
760c4918cb
3 changed files with 17 additions and 4 deletions
|
@ -4163,6 +4163,7 @@ async fn test_collaborating_with_completion(
|
||||||
capabilities: lsp::ServerCapabilities {
|
capabilities: lsp::ServerCapabilities {
|
||||||
completion_provider: Some(lsp::CompletionOptions {
|
completion_provider: Some(lsp::CompletionOptions {
|
||||||
trigger_characters: Some(vec![".".to_string()]),
|
trigger_characters: Some(vec![".".to_string()]),
|
||||||
|
resolve_provider: Some(true),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
|
|
@ -5237,6 +5237,7 @@ async fn test_completion(cx: &mut gpui::TestAppContext) {
|
||||||
lsp::ServerCapabilities {
|
lsp::ServerCapabilities {
|
||||||
completion_provider: Some(lsp::CompletionOptions {
|
completion_provider: Some(lsp::CompletionOptions {
|
||||||
trigger_characters: Some(vec![".".to_string(), ":".to_string()]),
|
trigger_characters: Some(vec![".".to_string(), ":".to_string()]),
|
||||||
|
resolve_provider: Some(true),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -7528,6 +7529,7 @@ async fn test_completions_with_additional_edits(cx: &mut gpui::TestAppContext) {
|
||||||
lsp::ServerCapabilities {
|
lsp::ServerCapabilities {
|
||||||
completion_provider: Some(lsp::CompletionOptions {
|
completion_provider: Some(lsp::CompletionOptions {
|
||||||
trigger_characters: Some(vec![".".to_string()]),
|
trigger_characters: Some(vec![".".to_string()]),
|
||||||
|
resolve_provider: Some(true),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
|
|
@ -4454,10 +4454,20 @@ impl Project {
|
||||||
};
|
};
|
||||||
|
|
||||||
cx.spawn(|this, mut cx| async move {
|
cx.spawn(|this, mut cx| async move {
|
||||||
let additional_text_edits = lang_server
|
let can_resolve = lang_server
|
||||||
.request::<lsp::request::ResolveCompletionItem>(completion.lsp_completion)
|
.capabilities()
|
||||||
.await?
|
.completion_provider
|
||||||
.additional_text_edits;
|
.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 {
|
if let Some(edits) = additional_text_edits {
|
||||||
let edits = this
|
let edits = this
|
||||||
.update(&mut cx, |this, cx| {
|
.update(&mut cx, |this, cx| {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue