Skip to content

Commit

Permalink
correctly handle opening helix inside symlinked directory (helix-edit…
Browse files Browse the repository at this point in the history
…or#10728)

* correctly handle opening helix inside symlinked directory

* Update helix-stdx/src/env.rs

---------

Co-authored-by: Blaž Hrastnik <[email protected]>
  • Loading branch information
pascalkuthe and archseer committed May 20, 2024
1 parent ff6aca1 commit 8444f52
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 handled 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 8444f52

Please sign in to comment.