diff --git a/book/src/themes.md b/book/src/themes.md index 8642e659..804baa1c 100644 --- a/book/src/themes.md +++ b/book/src/themes.md @@ -124,7 +124,9 @@ black = "#000000" Remember that the `[palette]` table includes all keys after its header, 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 | | --- | diff --git a/helix-view/src/theme.rs b/helix-view/src/theme.rs index 9f768505..9c33685b 100644 --- a/helix-view/src/theme.rs +++ b/helix-view/src/theme.rs @@ -143,30 +143,37 @@ struct ThemePalette { impl Default for ThemePalette { fn default() -> Self { - Self::new(hashmap! { - "black".to_string() => Color::Black, - "red".to_string() => Color::Red, - "green".to_string() => Color::Green, - "yellow".to_string() => Color::Yellow, - "blue".to_string() => Color::Blue, - "magenta".to_string() => Color::Magenta, - "cyan".to_string() => Color::Cyan, - "gray".to_string() => Color::Gray, - "light-red".to_string() => Color::LightRed, - "light-green".to_string() => Color::LightGreen, - "light-yellow".to_string() => Color::LightYellow, - "light-blue".to_string() => Color::LightBlue, - "light-magenta".to_string() => Color::LightMagenta, - "light-cyan".to_string() => Color::LightCyan, - "light-gray".to_string() => Color::LightGray, - "white".to_string() => Color::White, - }) + Self { + palette: hashmap! { + "black".to_string() => Color::Black, + "red".to_string() => Color::Red, + "green".to_string() => Color::Green, + "yellow".to_string() => Color::Yellow, + "blue".to_string() => Color::Blue, + "magenta".to_string() => Color::Magenta, + "cyan".to_string() => Color::Cyan, + "gray".to_string() => Color::Gray, + "light-red".to_string() => Color::LightRed, + "light-green".to_string() => Color::LightGreen, + "light-yellow".to_string() => Color::LightYellow, + "light-blue".to_string() => Color::LightBlue, + "light-magenta".to_string() => Color::LightMagenta, + "light-cyan".to_string() => Color::LightCyan, + "light-gray".to_string() => Color::LightGray, + "white".to_string() => Color::White, + }, + } } } impl ThemePalette { pub fn new(palette: HashMap) -> 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 {