diff --git a/zellij-utils/src/kdl/mod.rs b/zellij-utils/src/kdl/mod.rs index db72b80d22..35bf89403d 100644 --- a/zellij-utils/src/kdl/mod.rs +++ b/zellij-utils/src/kdl/mod.rs @@ -1791,7 +1791,7 @@ impl Themes { Ok(themes) } - pub fn from_string(raw_string: String) -> Result { + pub fn from_string(raw_string: &String) -> Result { let kdl_config: KdlDocument = raw_string.parse()?; let kdl_themes = kdl_config.get("themes").ok_or(ConfigError::new_kdl_error( "No theme node found in file".into(), @@ -1805,8 +1805,13 @@ impl Themes { pub fn from_path(path_to_theme_file: PathBuf) -> Result { // String is the theme name let kdl_config = std::fs::read_to_string(&path_to_theme_file) - .map_err(|e| ConfigError::IoPath(e, path_to_theme_file.into()))?; - Themes::from_string(kdl_config) + .map_err(|e| ConfigError::IoPath(e, path_to_theme_file.clone()))?; + Themes::from_string(&kdl_config).map_err(|e| match e { + ConfigError::KdlError(kdl_error) => ConfigError::KdlError( + kdl_error.add_src(path_to_theme_file.display().to_string(), kdl_config), + ), + e => e, + }) } pub fn from_dir(path_to_theme_dir: PathBuf) -> Result { diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index 44fed5fa80..09009a85bd 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -68,7 +68,7 @@ fn get_default_themes() -> Themes { let mut themes = Themes::default(); for file in ZELLIJ_DEFAULT_THEMES.files() { if let Some(content) = file.contents_utf8() { - match Themes::from_string(content.to_string()) { + match Themes::from_string(&content.to_string()) { Ok(theme) => themes = themes.merge(theme), Err(_) => {}, }