aboutsummaryrefslogtreecommitdiff
path: root/helix-view/src/theme.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-view/src/theme.rs')
-rw-r--r--helix-view/src/theme.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/helix-view/src/theme.rs b/helix-view/src/theme.rs
index 00c1bbbd..3f45aac6 100644
--- a/helix-view/src/theme.rs
+++ b/helix-view/src/theme.rs
@@ -153,8 +153,12 @@ impl Theme {
self.try_get(scope).unwrap_or_default()
}
+ /// Get the style of a scope, falling back to dot separated broader
+ /// scopes. For example if `ui.text.focus` is not defined in the theme,
+ /// `ui.text` is tried and then `ui` is tried.
pub fn try_get(&self, scope: &str) -> Option<Style> {
- self.styles.get(scope).copied()
+ std::iter::successors(Some(scope), |s| Some(s.rsplit_once('.')?.0))
+ .find_map(|s| self.styles.get(s).copied())
}
#[inline]