Fix theme inheritance for default themes (#5218)

This commit is contained in:
jliaoh 2022-12-30 09:15:30 -05:00 committed by GitHub
parent b813b1a659
commit 63dcaae1b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -14,15 +14,23 @@ use toml::{map::Map, Value};
use crate::graphics::UnderlineStyle; use crate::graphics::UnderlineStyle;
pub use crate::graphics::{Color, Modifier, Style}; 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 { pub static DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
name: "default".into(), 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 { pub static BASE16_DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
name: "base16_theme".into(), name: "base16_default".into(),
..toml::from_slice(include_bytes!("../../base16_theme.toml")) ..Theme::from(BASE16_DEFAULT_THEME_DATA.clone())
.expect("Failed to parse base 16 default theme")
}); });
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
@ -78,11 +86,16 @@ impl Loader {
) )
})?; })?;
let parent_theme_toml = self.load_theme( 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, parent_theme_name,
base_them_name, base_them_name,
base_them_name == parent_theme_name, base_them_name == parent_theme_name,
)?; )?,
};
self.merge_themes(parent_theme_toml, theme_toml) self.merge_themes(parent_theme_toml, theme_toml)
} else { } else {