aboutsummaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/graphics.rs19
-rw-r--r--helix-view/src/theme.rs1
2 files changed, 20 insertions, 0 deletions
diff --git a/helix-view/src/graphics.rs b/helix-view/src/graphics.rs
index 15492119..c995f60c 100644
--- a/helix-view/src/graphics.rs
+++ b/helix-view/src/graphics.rs
@@ -440,6 +440,7 @@ impl FromStr for Modifier {
pub struct Style {
pub fg: Option<Color>,
pub bg: Option<Color>,
+ pub underline: Option<Color>,
pub add_modifier: Modifier,
pub sub_modifier: Modifier,
}
@@ -449,6 +450,7 @@ impl Default for Style {
Style {
fg: None,
bg: None,
+ underline: None,
add_modifier: Modifier::empty(),
sub_modifier: Modifier::empty(),
}
@@ -461,6 +463,7 @@ impl Style {
Style {
fg: Some(Color::Reset),
bg: Some(Color::Reset),
+ underline: Some(Color::Reset),
add_modifier: Modifier::empty(),
sub_modifier: Modifier::all(),
}
@@ -496,6 +499,21 @@ impl Style {
self
}
+ /// Changes the underline color.
+ ///
+ /// ## Examples
+ ///
+ /// ```rust
+ /// # use helix_view::graphics::{Color, Style};
+ /// let style = Style::default().underline(Color::Blue);
+ /// let diff = Style::default().underline(Color::Red);
+ /// assert_eq!(style.patch(diff), Style::default().underline(Color::Red));
+ /// ```
+ pub fn underline(mut self, color: Color) -> Style {
+ self.underline = Some(color);
+ self
+ }
+
/// Changes the text emphasis.
///
/// When applied, it adds the given modifier to the `Style` modifiers.
@@ -552,6 +570,7 @@ impl Style {
pub fn patch(mut self, other: Style) -> Style {
self.fg = other.fg.or(self.fg);
self.bg = other.bg.or(self.bg);
+ self.underline = other.underline.or(self.underline);
self.add_modifier.remove(other.sub_modifier);
self.add_modifier.insert(other.add_modifier);
diff --git a/helix-view/src/theme.rs b/helix-view/src/theme.rs
index fa5fa702..5ce1b2c5 100644
--- a/helix-view/src/theme.rs
+++ b/helix-view/src/theme.rs
@@ -269,6 +269,7 @@ impl ThemePalette {
match name.as_str() {
"fg" => *style = style.fg(self.parse_color(value)?),
"bg" => *style = style.bg(self.parse_color(value)?),
+ "underline" => *style = style.underline(self.parse_color(value)?),
"modifiers" => {
let modifiers = value
.as_array()