diff options
author | jliaoh | 2022-12-30 14:15:30 +0000 |
---|---|---|
committer | GitHub | 2022-12-30 14:15:30 +0000 |
commit | 63dcaae1b9083396fb3faaef9eaa2421f7e48fb9 (patch) | |
tree | 217eaaa1baf56f70a0c2083ac401cabc716d444c | |
parent | b813b1a659e39fbe4c1a757ec837a132c6fadbf9 (diff) |
Fix theme inheritance for default themes (#5218)
-rw-r--r-- | helix-view/src/theme.rs | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/helix-view/src/theme.rs b/helix-view/src/theme.rs index b2c8a79f..cb0d3ac4 100644 --- a/helix-view/src/theme.rs +++ b/helix-view/src/theme.rs @@ -14,15 +14,23 @@ use toml::{map::Map, Value}; use crate::graphics::UnderlineStyle; pub use crate::graphics::{Color, Modifier, Style}; +pub static DEFAULT_THEME_DATA: Lazy<Value> = Lazy::new(|| { + toml::from_slice(include_bytes!("../../theme.toml")).expect("Failed to parse default theme") +}); + +pub static BASE16_DEFAULT_THEME_DATA: Lazy<Value> = Lazy::new(|| { + toml::from_slice(include_bytes!("../../base16_theme.toml")) + .expect("Failed to parse base 16 default theme") +}); + pub static DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme { name: "default".into(), - ..toml::from_slice(include_bytes!("../../theme.toml")).expect("Failed to parse default theme") + ..Theme::from(DEFAULT_THEME_DATA.clone()) }); pub static BASE16_DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme { - name: "base16_theme".into(), - ..toml::from_slice(include_bytes!("../../base16_theme.toml")) - .expect("Failed to parse base 16 default theme") + name: "base16_default".into(), + ..Theme::from(BASE16_DEFAULT_THEME_DATA.clone()) }); #[derive(Clone, Debug)] @@ -78,11 +86,16 @@ impl Loader { ) })?; - let parent_theme_toml = self.load_theme( - parent_theme_name, - base_them_name, - base_them_name == parent_theme_name, - )?; + let parent_theme_toml = match parent_theme_name { + // load default themes's toml from const. + "default" => DEFAULT_THEME_DATA.clone(), + "base16_default" => BASE16_DEFAULT_THEME_DATA.clone(), + _ => self.load_theme( + parent_theme_name, + base_them_name, + base_them_name == parent_theme_name, + )?, + }; self.merge_themes(parent_theme_toml, theme_toml) } else { |