Fix debugger on Windows (#35180)

Closes #33429

Release Notes:

- N/A
This commit is contained in:
张小白 2025-07-28 22:00:26 +08:00 committed by GitHub
parent 4aae7aed93
commit 3a1b1847c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -920,12 +920,22 @@ impl dap::adapters::DapDelegate for DapAdapterDelegate {
self.console.unbounded_send(msg).ok();
}
#[cfg(not(target_os = "windows"))]
async fn which(&self, command: &OsStr) -> Option<PathBuf> {
let worktree_abs_path = self.worktree.abs_path();
let shell_path = self.shell_env().await.get("PATH").cloned();
which::which_in(command, shell_path.as_ref(), worktree_abs_path).ok()
}
#[cfg(target_os = "windows")]
async fn which(&self, command: &OsStr) -> Option<PathBuf> {
// On Windows, `PATH` is handled differently from Unix. Windows generally expects users to modify the `PATH` themselves,
// and every program loads it directly from the system at startup.
// There's also no concept of a default shell on Windows, and you can't really retrieve one, so trying to get shell environment variables
// from a specific directory doesnt make sense on Windows.
which::which(command).ok()
}
async fn shell_env(&self) -> HashMap<String, String> {
let task = self.load_shell_env_task.clone();
task.await.unwrap_or_default()