mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-24 00:01:03 +00:00
feat: make ticket optional for cmp:trigger (#2968)
Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
parent
452b435b71
commit
559a46e399
7 changed files with 75 additions and 42 deletions
69
Cargo.lock
generated
69
Cargo.lock
generated
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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)?;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue