fix: Merge default palette with user palette

imgbot
Gokul Soumya 3 years ago committed by Blaž Hrastnik
parent e40e6db227
commit e4e93e176c

@ -124,7 +124,9 @@ black = "#000000"
Remember that the `[palette]` table includes all keys after its header, Remember that the `[palette]` table includes all keys after its header,
so you should define the palette after normal theme options. so you should define the palette after normal theme options.
If there is no `[palette]` section, a default palette which uses the terminal's default 16 colors are used: The default palette uses the terminal's default 16 colors, and the colors names
are listed below. The `[palette]` section in the config file takes precedence
over it and is merged into the default palette.
| Color Name | | Color Name |
| --- | | --- |

@ -143,30 +143,37 @@ struct ThemePalette {
impl Default for ThemePalette { impl Default for ThemePalette {
fn default() -> Self { fn default() -> Self {
Self::new(hashmap! { Self {
"black".to_string() => Color::Black, palette: hashmap! {
"red".to_string() => Color::Red, "black".to_string() => Color::Black,
"green".to_string() => Color::Green, "red".to_string() => Color::Red,
"yellow".to_string() => Color::Yellow, "green".to_string() => Color::Green,
"blue".to_string() => Color::Blue, "yellow".to_string() => Color::Yellow,
"magenta".to_string() => Color::Magenta, "blue".to_string() => Color::Blue,
"cyan".to_string() => Color::Cyan, "magenta".to_string() => Color::Magenta,
"gray".to_string() => Color::Gray, "cyan".to_string() => Color::Cyan,
"light-red".to_string() => Color::LightRed, "gray".to_string() => Color::Gray,
"light-green".to_string() => Color::LightGreen, "light-red".to_string() => Color::LightRed,
"light-yellow".to_string() => Color::LightYellow, "light-green".to_string() => Color::LightGreen,
"light-blue".to_string() => Color::LightBlue, "light-yellow".to_string() => Color::LightYellow,
"light-magenta".to_string() => Color::LightMagenta, "light-blue".to_string() => Color::LightBlue,
"light-cyan".to_string() => Color::LightCyan, "light-magenta".to_string() => Color::LightMagenta,
"light-gray".to_string() => Color::LightGray, "light-cyan".to_string() => Color::LightCyan,
"white".to_string() => Color::White, "light-gray".to_string() => Color::LightGray,
}) "white".to_string() => Color::White,
},
}
} }
} }
impl ThemePalette { impl ThemePalette {
pub fn new(palette: HashMap<String, Color>) -> Self { pub fn new(palette: HashMap<String, Color>) -> Self {
Self { palette } let ThemePalette {
palette: mut default,
} = ThemePalette::default();
default.extend(palette);
Self { palette: default }
} }
pub fn hex_string_to_rgb(s: &str) -> Result<Color, String> { pub fn hex_string_to_rgb(s: &str) -> Result<Color, String> {

Loading…
Cancel
Save