Skip to content

Commit

Permalink
correctly handle opening helix inside symlinked directory
Browse files Browse the repository at this point in the history
  • Loading branch information
pascalkuthe committed May 11, 2024
1 parent 00e9e5e commit 8d50d78
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions helix-stdx/src/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,23 @@ pub fn current_working_dir() -> PathBuf {
return path.clone();
}

let path = std::env::current_dir()
.map(crate::path::normalize)
.expect("Couldn't determine current working directory");
let mut cwd = CWD.write().unwrap();
*cwd = Some(path.clone());
// implementation of crossplatform pwd -L
// we want pwd -L so that symlinked directories are handeled correctly
let mut cwd = std::env::current_dir().expect("Couldn't determine current working directory");

let pwd = std::env::var_os("PWD");
#[cfg(windows)]
let pwd = pwd.or_else(|| std::env::var_os("CD"));

if let Some(pwd) = pwd.map(PathBuf::from) {
if pwd.canonicalize().ok().as_ref() == Some(&cwd) {
cwd = pwd;
}
}
let mut dst = CWD.write().unwrap();
*dst = Some(cwd.clone());

path
cwd
}

pub fn set_current_working_dir(path: impl AsRef<Path>) -> std::io::Result<()> {
Expand Down

0 comments on commit 8d50d78

Please sign in to comment.