feat: make ticket optional for cmp:trigger (#2968)

Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
simonborje 2025-07-09 18:12:51 +02:00 committed by GitHub
parent 452b435b71
commit 559a46e399
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 75 additions and 42 deletions

69
Cargo.lock generated
View file

@ -1385,9 +1385,9 @@ dependencies = [
[[package]]
name = "lru"
version = "0.15.0"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0281c2e25e62316a5c9d98f2d2e9e95a37841afdaf4383c177dbb5c1dfab0568"
checksum = "86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed"
dependencies = [
"hashbrown",
]
@ -2351,6 +2351,15 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_spanned"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
dependencies = [
"serde",
]
[[package]]
name = "sharded-slab"
version = "0.1.7"
@ -2532,7 +2541,7 @@ dependencies = [
"cfg-expr",
"heck",
"pkg-config",
"toml",
"toml 0.8.23",
"version-compare",
]
@ -2723,11 +2732,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
"serde_spanned 0.6.9",
"toml_datetime 0.6.11",
"toml_edit",
]
[[package]]
name = "toml"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f271e09bde39ab52250160a67e88577e0559ad77e9085de6e9051a2c4353f8f8"
dependencies = [
"indexmap",
"serde",
"serde_spanned 1.0.0",
"toml_datetime 0.7.0",
"toml_parser",
"toml_writer",
"winnow",
]
[[package]]
name = "toml_datetime"
version = "0.6.11"
@ -2737,6 +2761,15 @@ dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
version = "0.22.27"
@ -2745,17 +2778,25 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
"toml_write",
"serde_spanned 0.6.9",
"toml_datetime 0.6.11",
"winnow",
]
[[package]]
name = "toml_write"
version = "0.1.2"
name = "toml_parser"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
checksum = "b5c1c469eda89749d2230d8156a5969a69ffe0d6d01200581cdc6110674d293e"
dependencies = [
"winnow",
]
[[package]]
name = "toml_writer"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b679217f2848de74cabd3e8fc5e6d66f40b7da40f8e1954d92054d9010690fd5"
[[package]]
name = "tracing"
@ -3503,7 +3544,7 @@ dependencies = [
"serde",
"serde_json",
"tokio",
"toml",
"toml 0.9.0",
"twox-hash",
"vergen-gitcl",
"yazi-boot",
@ -3534,7 +3575,7 @@ dependencies = [
"ratatui",
"regex",
"serde",
"toml",
"toml 0.9.0",
"tracing",
"yazi-codegen",
"yazi-fs",
@ -3771,7 +3812,7 @@ dependencies = [
"async-priority-channel",
"futures",
"libc",
"lru 0.15.0",
"lru 0.16.0",
"parking_lot",
"scopeguard",
"tokio",

View file

@ -33,7 +33,7 @@ futures = "0.3.31"
globset = "0.4.16"
indexmap = { version = "2.10.0", features = [ "serde" ] }
libc = "0.2.174"
lru = "0.15.0"
lru = "0.16.0"
mlua = { version = "0.10.5", features = [ "anyhow", "async", "error-send", "lua54", "macros", "serialize" ] }
objc = "0.2.7"
ordered-float = { version = "5.0.0", features = [ "serde" ] }
@ -48,7 +48,7 @@ syntect = { version = "5.2.0", default-features = false, features =
tokio = { version = "1.46.1", features = [ "full" ] }
tokio-stream = "0.1.17"
tokio-util = "0.7.15"
toml = { version = "0.8.23" }
toml = { version = "0.9.0" }
tracing = { version = "0.1.41", features = [ "max_level_debug", "release_max_level_debug" ] }
twox-hash = { version = "2.1.1", default-features = false, features = [ "std", "random", "xxhash3_128" ] }
unicode-width = { version = "0.2.0", default-features = false }

View file

@ -27,8 +27,8 @@ fn try_init(merge: bool) -> anyhow::Result<()> {
let mut keymap = Preset::keymap()?;
if merge {
yazi = yazi.deserialize_over(toml::Deserializer::new(&yazi::Yazi::read()?))?;
keymap = keymap.deserialize_over(toml::Deserializer::new(&keymap::Keymap::read()?))?;
yazi = yazi.deserialize_over(toml::Deserializer::parse(&yazi::Yazi::read()?)?)?;
keymap = keymap.deserialize_over(toml::Deserializer::parse(&keymap::Keymap::read()?)?)?;
}
YAZI.init(yazi.reshape()?);
@ -48,9 +48,10 @@ fn try_init_flavor(light: bool, merge: bool) -> anyhow::Result<()> {
let mut theme = Preset::theme(light)?;
if merge {
let shadow = theme::Theme::deserialize_shadow(toml::Deserializer::new(&theme::Theme::read()?))?;
let shadow =
theme::Theme::deserialize_shadow(toml::Deserializer::parse(&theme::Theme::read()?)?)?;
let flavor = shadow.flavor.as_ref().map(theme::Flavor::from).unwrap_or_default().read(light)?;
theme = theme.deserialize_over(toml::Deserializer::new(&flavor))?;
theme = theme.deserialize_over(toml::Deserializer::parse(&flavor)?)?;
theme = theme.deserialize_over_with::<toml::Value>(shadow)?;
}

View file

@ -12,18 +12,23 @@ use crate::cmp::Cmp;
impl Cmp {
#[yazi_codegen::command]
pub fn trigger(&mut self, opt: TriggerOpt) {
if opt.ticket < self.ticket {
return;
if let Some(t) = opt.ticket {
if t < self.ticket {
return;
}
self.ticket = t;
}
self.ticket = opt.ticket;
let Some((parent, word)) = Self::split_path(&opt.word) else {
return self.close(false);
};
if self.caches.contains_key(&parent) {
return self.show(
Cmd::default().with_any("cache-name", parent).with("word", word).with("ticket", opt.ticket),
Cmd::default()
.with_any("cache-name", parent)
.with("word", word)
.with("ticket", self.ticket),
);
}

View file

@ -157,11 +157,6 @@ impl<'a> Executor<'a> {
return self.app.cx.tasks.$name(cmd);
}
};
($name:ident, $alias:literal) => {
if cmd.name == $alias {
return self.app.cx.tasks.$name(cmd);
}
};
}
on!(show);
@ -249,11 +244,7 @@ impl<'a> Executor<'a> {
_ => {}
}
}
InputMode::Insert => match cmd.name.as_ref() {
"complete" if cmd.bool("trigger") => return self.app.cx.cmp.trigger(cmd),
_ => {}
},
InputMode::Replace => {}
InputMode::Insert | InputMode::Replace => {}
};
self.app.cx.input.execute(cmd)

View file

@ -2,14 +2,14 @@ use yazi_shared::{Id, SStr, event::{CmdCow, Data}};
pub struct TriggerOpt {
pub word: SStr,
pub ticket: Id,
pub ticket: Option<Id>,
}
impl From<CmdCow> for TriggerOpt {
fn from(mut c: CmdCow) -> Self {
Self {
word: c.take_first_str().unwrap_or_default(),
ticket: c.get("ticket").and_then(Data::as_id).unwrap_or_default(),
ticket: c.get("ticket").and_then(Data::as_id),
}
}
}

View file

@ -10,14 +10,9 @@ impl Input {
return self.$name(cmd);
}
};
($name:ident, $alias:literal) => {
if cmd.name == $alias {
return self.$name(cmd);
}
};
}
on!(r#move, "move");
on!(r#move);
on!(backward);
on!(forward);