clangd: Use Url::to_file_path() to get actual file path for header/source (#20856)
Using `Url::path()` seems fine on POSIX systems as it will leave forward slash (given hostname is empty). On Windows it will result in error. Release Notes: - N/A
This commit is contained in:
parent
5b0c15d8c4
commit
9454f0f1c7
1 changed files with 8 additions and 7 deletions
|
@ -1,5 +1,3 @@
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
use anyhow::Context as _;
|
use anyhow::Context as _;
|
||||||
use gpui::{View, ViewContext, WindowContext};
|
use gpui::{View, ViewContext, WindowContext};
|
||||||
use language::Language;
|
use language::Language;
|
||||||
|
@ -54,9 +52,9 @@ pub fn switch_source_header(
|
||||||
cx.spawn(|_editor, mut cx| async move {
|
cx.spawn(|_editor, mut cx| async move {
|
||||||
let switch_source_header = switch_source_header_task
|
let switch_source_header = switch_source_header_task
|
||||||
.await
|
.await
|
||||||
.with_context(|| format!("Switch source/header LSP request for path \"{}\" failed", source_file))?;
|
.with_context(|| format!("Switch source/header LSP request for path \"{source_file}\" failed"))?;
|
||||||
if switch_source_header.0.is_empty() {
|
if switch_source_header.0.is_empty() {
|
||||||
log::info!("Clangd returned an empty string when requesting to switch source/header from \"{}\"", source_file);
|
log::info!("Clangd returned an empty string when requesting to switch source/header from \"{source_file}\"" );
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,14 +65,17 @@ pub fn switch_source_header(
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
let path = goto.to_file_path().map_err(|()| {
|
||||||
|
anyhow::anyhow!("URL conversion to file path failed for \"{goto}\"")
|
||||||
|
})?;
|
||||||
|
|
||||||
workspace
|
workspace
|
||||||
.update(&mut cx, |workspace, view_cx| {
|
.update(&mut cx, |workspace, view_cx| {
|
||||||
workspace.open_abs_path(PathBuf::from(goto.path()), false, view_cx)
|
workspace.open_abs_path(path, false, view_cx)
|
||||||
})
|
})
|
||||||
.with_context(|| {
|
.with_context(|| {
|
||||||
format!(
|
format!(
|
||||||
"Switch source/header could not open \"{}\" in workspace",
|
"Switch source/header could not open \"{goto}\" in workspace"
|
||||||
goto.path()
|
|
||||||
)
|
)
|
||||||
})?
|
})?
|
||||||
.await
|
.await
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue