on master help sign in
Fix theme inheritance for default themes (#5218)
63dcaaejliaoh
helix-view/src/theme.rs+22−9
@@ -14,15 +14,23 @@ use toml::{map::Map, Value};
14use crate::graphics::UnderlineStyle;
14use crate::graphics::UnderlineStyle;
15pub use crate::graphics::{Color, Modifier, Style};
15pub use crate::graphics::{Color, Modifier, Style};
16
16
17+pub static DEFAULT_THEME_DATA: Lazy<Value> = Lazy::new(|| {
18+ toml::from_slice(include_bytes!("../../theme.toml")).expect("Failed to parse default theme")
19+});
20+
21+pub static BASE16_DEFAULT_THEME_DATA: Lazy<Value> = Lazy::new(|| {
22+ toml::from_slice(include_bytes!("../../base16_theme.toml"))
23+ .expect("Failed to parse base 16 default theme")
24+});
25+
17pub static DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
26pub static DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
18 name: "default".into(),
27 name: "default".into(),
19− ..toml::from_slice(include_bytes!("../../theme.toml")).expect("Failed to parse default theme")
28+ ..Theme::from(DEFAULT_THEME_DATA.clone())
20});
29});
21
30
22pub static BASE16_DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
31pub static BASE16_DEFAULT_THEME: Lazy<Theme> = Lazy::new(|| Theme {
23− name: "base16_theme".into(),
32+ name: "base16_default".into(),
24− ..toml::from_slice(include_bytes!("../../base16_theme.toml"))
33+ ..Theme::from(BASE16_DEFAULT_THEME_DATA.clone())
25− .expect("Failed to parse base 16 default theme")
26});
34});
27
35
28#[derive(Clone, Debug)]
36#[derive(Clone, Debug)]
@@ -78,11 +86,16 @@ impl Loader {
78 )
86 )
79 })?;
87 })?;
80
88
89+ let parent_theme_toml = match parent_theme_name {
90+ // load default themes's toml from const.
91+ "default" => DEFAULT_THEME_DATA.clone(),
92+ "base16_default" => BASE16_DEFAULT_THEME_DATA.clone(),
81− let parent_theme_toml = self.load_theme(
93+ _ => self.load_theme(
82− parent_theme_name,
94+ parent_theme_name,
83− base_them_name,
95+ base_them_name,
84− base_them_name == parent_theme_name,
96+ base_them_name == parent_theme_name,
85− )?;
97+ )?,
98+ };
86
99
87 self.merge_themes(parent_theme_toml, theme_toml)
100 self.merge_themes(parent_theme_toml, theme_toml)
88 } else {
101 } else {