aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/config/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/config/mod.rs')
-rw-r--r--alacritty/src/config/mod.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/alacritty/src/config/mod.rs b/alacritty/src/config/mod.rs
index f043d73b..488ef537 100644
--- a/alacritty/src/config/mod.rs
+++ b/alacritty/src/config/mod.rs
@@ -205,7 +205,7 @@ fn parse_config(
let config = deserialize_config(path, false)?;
// Merge config with imports.
- let imports = load_imports(&config, config_paths, recursion_limit);
+ let imports = load_imports(&config, path, config_paths, recursion_limit);
Ok(serde_utils::merge(imports, config))
}
@@ -237,9 +237,14 @@ pub fn deserialize_config(path: &Path, warn_pruned: bool) -> Result<Value> {
}
/// Load all referenced configuration files.
-fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit: usize) -> Value {
+fn load_imports(
+ config: &Value,
+ base_path: &Path,
+ config_paths: &mut Vec<PathBuf>,
+ recursion_limit: usize,
+) -> Value {
// Get paths for all imports.
- let import_paths = match imports(config, recursion_limit) {
+ let import_paths = match imports(config, base_path, recursion_limit) {
Ok(import_paths) => import_paths,
Err(err) => {
error!(target: LOG_TARGET_CONFIG, "{err}");
@@ -278,6 +283,7 @@ fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit
/// Get all import paths for a configuration.
pub fn imports(
config: &Value,
+ base_path: &Path,
recursion_limit: usize,
) -> StdResult<Vec<StdResult<PathBuf, String>>, String> {
let imports = match config.get("import") {
@@ -307,6 +313,12 @@ pub fn imports(
path = home_dir.join(stripped);
}
+ if path.is_relative() {
+ if let Some(base_path) = base_path.parent() {
+ path = base_path.join(path)
+ }
+ }
+
import_paths.push(Ok(path));
}