mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-23 07:41:03 +00:00
feat: add prepend_rules and append_rules for [open] in yazi.toml (#754)
This commit is contained in:
parent
c3a1103529
commit
7f062359e8
1 changed files with 10 additions and 3 deletions
|
|
@ -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<OpenRule>,
|
||||
rules: Vec<OpenRule>,
|
||||
#[serde(default)]
|
||||
prepend_rules: Vec<OpenRule>,
|
||||
#[serde(default)]
|
||||
append_rules: Vec<OpenRule>,
|
||||
}
|
||||
|
||||
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::<IndexSet<_>>()))
|
||||
.collect();
|
||||
|
||||
Ok(Self { rules: outer.open.rules, openers })
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue