diff options
author | Gokul Soumya | 2022-03-04 00:35:21 +0000 |
---|---|---|
committer | GitHub | 2022-03-04 00:35:21 +0000 |
commit | 74a9dd51ffb7cd3c14d4c7b5502e4febad24caa0 (patch) | |
tree | 57c03851f647a3fe5e1d613fe46bed835c77a7ec /helix-term/src | |
parent | c484b089230b541e63edc34a041e2842f2942e23 (diff) |
Fallback to broader scope if theme scope not found (#1714)
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/ui/markdown.rs | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/helix-term/src/ui/markdown.rs b/helix-term/src/ui/markdown.rs index e6f2316e..b01e7935 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<syntax::Loader>) -> 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<Style> = Self::HEADING_STYLES .iter() .map(|key| get_theme(key)) |