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
parent f33b8abc72
commit 550064f80f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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}")
};