mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +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 yazi_shared::MIME_DIR;
|
||||||
|
|
||||||
use super::Opener;
|
use super::Opener;
|
||||||
use crate::{open::OpenRule, MERGED_YAZI};
|
use crate::{open::OpenRule, Preset, MERGED_YAZI};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Open {
|
pub struct Open {
|
||||||
|
|
@ -70,15 +70,22 @@ impl<'de> Deserialize<'de> for Open {
|
||||||
}
|
}
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct OuterOpen {
|
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
|
let openers = outer
|
||||||
.opener
|
.opener
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(k, v)| (k, v.into_iter().filter_map(|o| o.take()).collect::<IndexSet<_>>()))
|
.map(|(k, v)| (k, v.into_iter().filter_map(|o| o.take()).collect::<IndexSet<_>>()))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Ok(Self { rules: outer.open.rules, openers })
|
Ok(Self { rules: outer.open.rules, openers })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue