From d3f6d22a709e142ab93875104106998b5b22a524 Mon Sep 17 00:00:00 2001 From: Tim Hill Date: Sun, 26 Nov 2023 22:46:14 -0600 Subject: [PATCH 1/2] Add parsing of gutterSettings --- src/highlighting/theme_load.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/highlighting/theme_load.rs b/src/highlighting/theme_load.rs index ca1a7d15..0274cb30 100644 --- a/src/highlighting/theme_load.rs +++ b/src/highlighting/theme_load.rs @@ -300,7 +300,7 @@ impl ParseSettings for Theme { _ => return Err(IncorrectSyntax), }; let mut iter = items.into_iter(); - let settings = match iter.next() { + let mut settings = match iter.next() { Some(Settings::Object(mut obj)) => { match obj.remove("settings") { Some(settings) => ThemeSettings::parse_settings(settings)?, @@ -309,6 +309,20 @@ impl ParseSettings for Theme { } _ => return Err(UndefinedSettings), }; + if let Some(Settings::Object(obj)) = obj.remove("gutterSettings") { + for (key, value) in obj { + let color = Color::parse_settings(value).ok(); + match &key[..] { + "background" => { + settings.gutter = settings.gutter.or(color) + } + "foreground" => { + settings.gutter_foreground = settings.gutter_foreground.or(color) + } + _ => (), + } + } + } let mut scopes = Vec::new(); for json in iter { // TODO option to disable best effort parsing and bubble up warnings From 22751f46c1d8361b3cafec0b97a24bfb0efcb14d Mon Sep 17 00:00:00 2001 From: Tim Hill Date: Sun, 10 Dec 2023 21:36:14 -0600 Subject: [PATCH 2/2] Add unit test for gutter colors --- src/highlighting/theme_set.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/highlighting/theme_set.rs b/src/highlighting/theme_set.rs index 1b26c1fe..fd20f6ec 100644 --- a/src/highlighting/theme_set.rs +++ b/src/highlighting/theme_set.rs @@ -108,7 +108,25 @@ mod tests { r: 0xc0, g: 0xc5, b: 0xce, - a: 0xFF, + a: 0xff, + } + ); + assert_eq!( + theme.settings.gutter_foreground.unwrap(), + Color { + r: 0x65, + g: 0x73, + b: 0x7e, + a: 0xff, + } + ); + assert_eq!( + theme.settings.gutter.unwrap(), + Color { + r: 0x34, + g: 0x3d, + b: 0x46, + a: 0xff, } ); // unreachable!();