diff --git a/yazi-config/src/theme/icon.rs b/yazi-config/src/theme/icon.rs index 3898334b..69f9418d 100644 --- a/yazi-config/src/theme/icon.rs +++ b/yazi-config/src/theme/icon.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Deserializer}; use super::Style; -use crate::{theme::{Color, StyleShadow}, Pattern}; +use crate::{theme::{Color, StyleShadow}, Pattern, preset::Preset}; pub struct Icon { pub name: Pattern, @@ -17,6 +17,10 @@ impl Icon { #[derive(Deserialize)] struct IconOuter { rules: Vec, + #[serde(default)] + prepend_rules: Vec, + #[serde(default)] + append_rules: Vec, } #[derive(Deserialize)] struct IconRule { @@ -26,8 +30,13 @@ impl Icon { fg: Option, } + let mut outer = IconOuter::deserialize(deserializer)?; + + #[rustfmt::skip] + Preset::mix(&mut outer.rules, outer.prepend_rules, outer.append_rules); + Ok( - IconOuter::deserialize(deserializer)? + outer .rules .into_iter() .map(|r| Icon {