From 88309990a9b585bef077dcb877c62be9b1c0e7ad Mon Sep 17 00:00:00 2001 From: Imbris Date: Thu, 27 Apr 2023 22:43:55 -0400 Subject: [PATCH 1/3] Fix error loading non-existant themes directory If the themes directory is derived from the config directory (rather than being specified explicitly in the config_options), we will avoid trying to load from it if it doesn't exist. --- zellij-utils/src/setup.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index a40df7091a..fa03017695 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -324,6 +324,9 @@ impl Setup { let user_theme_dir = config_options.theme_dir.clone().or_else(|| { get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)) + // If theme dir is not explicitly specified in config_options, + // only try to use it if it exists. + .filter(|dir| dir.exists()) }); if let Some(user_theme_dir) = user_theme_dir { config.themes = config.themes.merge(Themes::from_dir(user_theme_dir)?); From 0fe4d31990761f423f07aa751f41f9c9182f3b69 Mon Sep 17 00:00:00 2001 From: Imbris Date: Thu, 27 Apr 2023 23:10:34 -0400 Subject: [PATCH 2/3] Use default themes as the base when merging with the themes specified in the config. This avoids the default themes overriding themes specified in the config. --- zellij-utils/src/setup.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index fa03017695..252706fdd4 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -320,7 +320,7 @@ impl Setup { None => config.options.clone(), }; - config.themes = config.themes.merge(get_default_themes()); + config.themes = get_default_themes().merge(config.themes); let user_theme_dir = config_options.theme_dir.clone().or_else(|| { get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)) From 34bb2fa39d2032f125eaffa0cc816f5104ab7f7b Mon Sep 17 00:00:00 2001 From: Imbris Date: Fri, 28 Apr 2023 15:56:04 -0400 Subject: [PATCH 3/3] If `setup --clean` is used, avoid loading from the user's theme directory. --- zellij-utils/src/setup.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index 252706fdd4..9127f70ec2 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -322,14 +322,16 @@ impl Setup { config.themes = get_default_themes().merge(config.themes); - let user_theme_dir = config_options.theme_dir.clone().or_else(|| { - get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)) - // If theme dir is not explicitly specified in config_options, - // only try to use it if it exists. - .filter(|dir| dir.exists()) - }); - if let Some(user_theme_dir) = user_theme_dir { - config.themes = config.themes.merge(Themes::from_dir(user_theme_dir)?); + if let Some(Command::Setup(Setup { clean: false, .. })) = &cli_args.command { + let user_theme_dir = config_options.theme_dir.clone().or_else(|| { + get_theme_dir(cli_args.config_dir.clone().or_else(find_default_config_dir)) + // If theme dir is not explicitly specified in config_options, + // only try to use it if it exists. + .filter(|dir| dir.exists()) + }); + if let Some(user_theme_dir) = user_theme_dir { + config.themes = config.themes.merge(Themes::from_dir(user_theme_dir)?); + } } if let Some(Command::Setup(ref setup)) = &cli_args.command {