From 7f062359e8f4e5d8443a6db9e2360233b544eedf Mon Sep 17 00:00:00 2001 From: Filipe Paniguel Date: Thu, 29 Feb 2024 23:38:02 -0300 Subject: [PATCH] feat: add `prepend_rules` and `append_rules` for `[open]` in `yazi.toml` (#754) --- yazi-config/src/open/open.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/yazi-config/src/open/open.rs b/yazi-config/src/open/open.rs index 5339314d..a18ebfed 100644 --- a/yazi-config/src/open/open.rs +++ b/yazi-config/src/open/open.rs @@ -5,7 +5,7 @@ use serde::{Deserialize, Deserializer}; use yazi_shared::MIME_DIR; use super::Opener; -use crate::{open::OpenRule, MERGED_YAZI}; +use crate::{open::OpenRule, Preset, MERGED_YAZI}; #[derive(Debug)] pub struct Open { @@ -70,15 +70,22 @@ impl<'de> Deserialize<'de> for Open { } #[derive(Deserialize)] struct OuterOpen { - rules: Vec, + rules: Vec, + #[serde(default)] + prepend_rules: Vec, + #[serde(default)] + append_rules: Vec, } - let outer = Outer::deserialize(deserializer)?; + let mut outer = Outer::deserialize(deserializer)?; + Preset::mix(&mut outer.open.rules, outer.open.prepend_rules, outer.open.append_rules); + let openers = outer .opener .into_iter() .map(|(k, v)| (k, v.into_iter().filter_map(|o| o.take()).collect::>())) .collect(); + Ok(Self { rules: outer.open.rules, openers }) } }