Use originating language server to resolve additional completion edits
This commit is contained in:
parent
7a67ec5743
commit
40ce099780
6 changed files with 10 additions and 4 deletions
|
@ -149,6 +149,7 @@ pub struct Completion {
|
||||||
pub old_range: Range<Anchor>,
|
pub old_range: Range<Anchor>,
|
||||||
pub new_text: String,
|
pub new_text: String,
|
||||||
pub label: CodeLabel,
|
pub label: CodeLabel,
|
||||||
|
pub server_id: LanguageServerId,
|
||||||
pub lsp_completion: lsp::CompletionItem,
|
pub lsp_completion: lsp::CompletionItem,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -433,6 +433,7 @@ pub fn serialize_completion(completion: &Completion) -> proto::Completion {
|
||||||
old_start: Some(serialize_anchor(&completion.old_range.start)),
|
old_start: Some(serialize_anchor(&completion.old_range.start)),
|
||||||
old_end: Some(serialize_anchor(&completion.old_range.end)),
|
old_end: Some(serialize_anchor(&completion.old_range.end)),
|
||||||
new_text: completion.new_text.clone(),
|
new_text: completion.new_text.clone(),
|
||||||
|
server_id: completion.server_id.0 as u64,
|
||||||
lsp_completion: serde_json::to_vec(&completion.lsp_completion).unwrap(),
|
lsp_completion: serde_json::to_vec(&completion.lsp_completion).unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -465,6 +466,7 @@ pub async fn deserialize_completion(
|
||||||
lsp_completion.filter_text.as_deref(),
|
lsp_completion.filter_text.as_deref(),
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
|
server_id: LanguageServerId(completion.server_id as usize),
|
||||||
lsp_completion,
|
lsp_completion,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1338,7 +1338,7 @@ impl LspCommand for GetCompletions {
|
||||||
completions: Option<lsp::CompletionResponse>,
|
completions: Option<lsp::CompletionResponse>,
|
||||||
_: ModelHandle<Project>,
|
_: ModelHandle<Project>,
|
||||||
buffer: ModelHandle<Buffer>,
|
buffer: ModelHandle<Buffer>,
|
||||||
_: LanguageServerId,
|
server_id: LanguageServerId,
|
||||||
cx: AsyncAppContext,
|
cx: AsyncAppContext,
|
||||||
) -> Result<Vec<Completion>> {
|
) -> Result<Vec<Completion>> {
|
||||||
let completions = if let Some(completions) = completions {
|
let completions = if let Some(completions) = completions {
|
||||||
|
@ -1425,6 +1425,7 @@ impl LspCommand for GetCompletions {
|
||||||
lsp_completion.filter_text.as_deref(),
|
lsp_completion.filter_text.as_deref(),
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
|
server_id,
|
||||||
lsp_completion,
|
lsp_completion,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -4470,7 +4470,8 @@ impl Project {
|
||||||
let buffer_id = buffer.remote_id();
|
let buffer_id = buffer.remote_id();
|
||||||
|
|
||||||
if self.is_local() {
|
if self.is_local() {
|
||||||
let lang_server = match self.primary_language_server_for_buffer(buffer, cx) {
|
let server_id = completion.server_id;
|
||||||
|
let lang_server = match self.language_server_for_buffer(buffer, server_id, cx) {
|
||||||
Some((_, server)) => server.clone(),
|
Some((_, server)) => server.clone(),
|
||||||
_ => return Task::ready(Ok(Default::default())),
|
_ => return Task::ready(Ok(Default::default())),
|
||||||
};
|
};
|
||||||
|
|
|
@ -630,7 +630,8 @@ message Completion {
|
||||||
Anchor old_start = 1;
|
Anchor old_start = 1;
|
||||||
Anchor old_end = 2;
|
Anchor old_end = 2;
|
||||||
string new_text = 3;
|
string new_text = 3;
|
||||||
bytes lsp_completion = 4;
|
uint64 server_id = 4;
|
||||||
|
bytes lsp_completion = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetCodeActions {
|
message GetCodeActions {
|
||||||
|
|
|
@ -6,4 +6,4 @@ pub use conn::Connection;
|
||||||
pub use peer::*;
|
pub use peer::*;
|
||||||
mod macros;
|
mod macros;
|
||||||
|
|
||||||
pub const PROTOCOL_VERSION: u32 = 59;
|
pub const PROTOCOL_VERSION: u32 = 60;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue