Add support for rename with language servers that lack prepareRename (#23000)
This adds support for LSPs that use the old rename flow which does not first ask the LSP for the rename range and check that it is a valid range to rename. Closes #16663 Release Notes: * Fixed rename symbols action when the language server does not have the capability to prepare renames - such as `luau-lsp`.
This commit is contained in:
parent
b65dc8c566
commit
bda0c67ece
7 changed files with 268 additions and 66 deletions
|
@ -3500,24 +3500,26 @@ impl LspStore {
|
|||
};
|
||||
let file = File::from_dyn(buffer.file()).and_then(File::as_local);
|
||||
if let (Some(file), Some(language_server)) = (file, language_server) {
|
||||
let lsp_params = match request.to_lsp(&file.abs_path(cx), buffer, &language_server, cx)
|
||||
{
|
||||
Ok(lsp_params) => lsp_params,
|
||||
let lsp_params = match request.to_lsp_params_or_response(
|
||||
&file.abs_path(cx),
|
||||
buffer,
|
||||
&language_server,
|
||||
cx,
|
||||
) {
|
||||
Ok(LspParamsOrResponse::Params(lsp_params)) => lsp_params,
|
||||
Ok(LspParamsOrResponse::Response(response)) => return Task::ready(Ok(response)),
|
||||
Err(err) => {
|
||||
log::error!(
|
||||
"Preparing LSP request to {} failed: {}",
|
||||
language_server.name(),
|
||||
err
|
||||
);
|
||||
return Task::ready(Err(err));
|
||||
let message =
|
||||
format!("LSP request to {} failed: {}", language_server.name(), err);
|
||||
log::error!("{}", message);
|
||||
return Task::ready(Err(anyhow!(message)));
|
||||
}
|
||||
};
|
||||
let status = request.status();
|
||||
if !request.check_capabilities(language_server.adapter_server_capabilities()) {
|
||||
return Task::ready(Ok(Default::default()));
|
||||
}
|
||||
return cx.spawn(move |this, cx| async move {
|
||||
if !request.check_capabilities(language_server.adapter_server_capabilities()) {
|
||||
return Ok(Default::default());
|
||||
}
|
||||
|
||||
let lsp_request = language_server.request::<R::LspRequest>(lsp_params);
|
||||
|
||||
let id = lsp_request.id();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue