From 74a9dd51ffb7cd3c14d4c7b5502e4febad24caa0 Mon Sep 17 00:00:00 2001 From: Gokul Soumya Date: Fri, 4 Mar 2022 06:05:21 +0530 Subject: [PATCH] Fallback to broader scope if theme scope not found (#1714) --- helix-term/src/ui/markdown.rs | 31 ++++++++++++------------------- helix-view/src/theme.rs | 6 +++++- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/helix-term/src/ui/markdown.rs b/helix-term/src/ui/markdown.rs index e6f2316ed..b01e7935a 100644 --- a/helix-term/src/ui/markdown.rs +++ b/helix-term/src/ui/markdown.rs @@ -27,16 +27,15 @@ pub struct Markdown { // better yet, just use Tendril + subtendril for references impl Markdown { - // theme keys, including fallbacks - const TEXT_STYLE: [&'static str; 2] = ["ui.text", "ui"]; - const BLOCK_STYLE: [&'static str; 3] = ["markup.raw.inline", "markup.raw", "markup"]; - const HEADING_STYLES: [[&'static str; 3]; 6] = [ - ["markup.heading.1", "markup.heading", "markup"], - ["markup.heading.2", "markup.heading", "markup"], - ["markup.heading.3", "markup.heading", "markup"], - ["markup.heading.4", "markup.heading", "markup"], - ["markup.heading.5", "markup.heading", "markup"], - ["markup.heading.6", "markup.heading", "markup"], + const TEXT_STYLE: &'static str = "ui.text"; + const BLOCK_STYLE: &'static str = "markup.raw.inline"; + const HEADING_STYLES: [&'static str; 6] = [ + "markup.heading.1", + "markup.heading.2", + "markup.heading.3", + "markup.heading.4", + "markup.heading.5", + "markup.heading.6", ]; pub fn new(contents: String, config_loader: Arc) -> Self { @@ -59,15 +58,9 @@ impl Markdown { let mut spans = Vec::new(); let mut lines = Vec::new(); - let get_theme = |keys: &[&str]| match theme { - Some(theme) => keys - .iter() - .find_map(|key| theme.try_get(key)) - .unwrap_or_default(), - None => Default::default(), - }; - let text_style = get_theme(&Self::TEXT_STYLE); - let code_style = get_theme(&Self::BLOCK_STYLE); + let get_theme = |key: &str| -> Style { theme.map(|t| t.get(key)).unwrap_or_default() }; + let text_style = get_theme(Self::TEXT_STYLE); + let code_style = get_theme(Self::BLOCK_STYLE); let heading_styles: Vec