aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/themes.md4
-rw-r--r--helix-view/src/theme.rs45
2 files changed, 29 insertions, 20 deletions
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<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> {