diff options
author | Christian Duerr <contact@christianduerr.com> | 2020-11-23 21:37:34 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-24 00:37:34 +0300 |
commit | 07cfe8bbba0851ff4989f6aaf082d72130cd0f5b (patch) | |
tree | a6b5b40c1b41b1d450bd12957d23283342958984 /alacritty/src/config/mod.rs | |
parent | da6f0a505e0d7da181b056c52f42b5a7f0bf29ed (diff) | |
download | r-alacritty-07cfe8bbba0851ff4989f6aaf082d72130cd0f5b.tar.gz r-alacritty-07cfe8bbba0851ff4989f6aaf082d72130cd0f5b.tar.bz2 r-alacritty-07cfe8bbba0851ff4989f6aaf082d72130cd0f5b.zip |
Add support for '~/' in config imports
This allows the configuration file imports to start with '~/' and
resolve relative to the user's home directory.
There is no support for '~user/' or '$HOME/' or any other shell
expansion. However since paths relative to the home directory should be
sufficient for everything, this provides a very simple solution without
any significant drawbacks.
Fixes #4157.
Diffstat (limited to 'alacritty/src/config/mod.rs')
-rw-r--r-- | alacritty/src/config/mod.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/alacritty/src/config/mod.rs b/alacritty/src/config/mod.rs index d24e8519..f9ee3528 100644 --- a/alacritty/src/config/mod.rs +++ b/alacritty/src/config/mod.rs @@ -211,7 +211,7 @@ fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit let mut merged = Value::Null; for import in imports { - let path = match import { + let mut path = match import { Value::String(path) => PathBuf::from(path), _ => { error!( @@ -222,6 +222,11 @@ fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit }, }; + // Resolve paths relative to user's home directory. + if let (Ok(stripped), Some(home_dir)) = (path.strip_prefix("~/"), dirs::home_dir()) { + path = home_dir.join(stripped); + } + if !path.exists() { info!(target: LOG_TARGET_CONFIG, "Skipping importing config; not found:"); info!(target: LOG_TARGET_CONFIG, " {:?}", path.display()); |