aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-11-19 03:06:19 +0000
committerBlaž Hrastnik2021-11-19 03:09:17 +0000
commit2b7c0866538676de4e5738d82e450163ff733104 (patch)
tree80118d360980738c190b259cc3725c98b5f2413f /helix-core/src
parentf2b4ff23badc48e8a606eae07ef62fa56ebbf6f6 (diff)
fix: Expand tilde first, then deal with relative paths
Otherwise the ~ gets treated as a relative path. Fixes #1107
Diffstat (limited to 'helix-core/src')
-rw-r--r--helix-core/src/path.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/helix-core/src/path.rs b/helix-core/src/path.rs
index 6c37cfa1..a6644465 100644
--- a/helix-core/src/path.rs
+++ b/helix-core/src/path.rs
@@ -40,7 +40,6 @@ pub fn expand_tilde(path: &Path) -> PathBuf {
/// needs to improve on.
/// Copied from cargo: <https://github.com/rust-lang/cargo/blob/070e459c2d8b79c5b2ac5218064e7603329c92ae/crates/cargo-util/src/paths.rs#L81>
pub fn get_normalized_path(path: &Path) -> PathBuf {
- let path = expand_tilde(path);
let mut components = path.components().peekable();
let mut ret = if let Some(c @ Component::Prefix(..)) = components.peek().cloned() {
components.next();
@@ -72,10 +71,11 @@ pub fn get_normalized_path(path: &Path) -> PathBuf {
/// This function is used instead of `std::fs::canonicalize` because we don't want to verify
/// here if the path exists, just normalize it's components.
pub fn get_canonicalized_path(path: &Path) -> std::io::Result<PathBuf> {
+ let path = expand_tilde(path);
let path = if path.is_relative() {
std::env::current_dir().map(|current_dir| current_dir.join(path))?
} else {
- path.to_path_buf()
+ path
};
Ok(get_normalized_path(path.as_path()))