Fix ~ expansion in ssh projects' terminals (#19078)

When setting a remote ssh project path starting with ~, Zed would fail
to cd into such project's directory when opening a new terminal.

Release Notes:

- N/A

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
This commit is contained in:
Kirill Bulatov
2024-10-11 21:53:37 +03:00
committed by GitHub
co-authored by Thorsten Ball
parent f33b8abc72
commit 550064f80f
+10 -1
View File
@@ -362,7 +362,16 @@ pub fn wrap_for_ssh(
}
let commands = if let Some(path) = path {
format!("cd {:?}; {} {}", path, env_changes, to_run)
let path_string = path.to_string_lossy().to_string();
// shlex will wrap the command in single quotes (''), disabling ~ expansion,
// replace ith with something that works
let tilde_prefix = "~/";
if path.starts_with(tilde_prefix) {
let trimmed_path = &path_string[tilde_prefix.len()..];
format!("cd \"$HOME/{trimmed_path}\"; {env_changes} {to_run}")
} else {
format!("cd {path:?}; {env_changes} {to_run}")
}
} else {
format!("cd; {env_changes} {to_run}")
};