mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
fix: filter keybindings by chord in command palette (#4078)
Co-authored-by: Alastair Scheuermann <alastairsounds@users.noreply.github.com> Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
parent
b1ee2e72ff
commit
2a106aa231
2 changed files with 33 additions and 13 deletions
12
Cargo.lock
generated
12
Cargo.lock
generated
|
|
@ -567,9 +567,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chacha20"
|
name = "chacha20"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
|
checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cipher",
|
"cipher",
|
||||||
|
|
@ -820,9 +820,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crypto-bigint"
|
name = "crypto-bigint"
|
||||||
version = "0.7.4"
|
version = "0.7.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "97bb4a855e3b10f84c4e7e895a7de01db7f9a7b7eb7f73ed9773fd52ac686451"
|
checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cpubits",
|
"cpubits",
|
||||||
"ctutils",
|
"ctutils",
|
||||||
|
|
@ -2669,9 +2669,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "primefield"
|
name = "primefield"
|
||||||
version = "0.14.0-rc.12"
|
version = "0.14.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8675564771a62f69a0af716b03e89b917b963c7b173b5855575e84fd4f605ca0"
|
checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crypto-bigint",
|
"crypto-bigint",
|
||||||
"crypto-common",
|
"crypto-common",
|
||||||
|
|
|
||||||
|
|
@ -41,18 +41,38 @@ impl Help {
|
||||||
self.keyword.clear();
|
self.keyword.clear();
|
||||||
self.bindings = KEYMAP.chords(self.layer).iter().cloned().collect();
|
self.bindings = KEYMAP.chords(self.layer).iter().cloned().collect();
|
||||||
} else if self.keyword != kw {
|
} else if self.keyword != kw {
|
||||||
let lowercased = kw.to_lowercase();
|
|
||||||
self.keyword = kw.to_owned();
|
self.keyword = kw.to_owned();
|
||||||
self.bindings = KEYMAP
|
self.bindings = Self::filter_chords(&KEYMAP.chords(self.layer), kw);
|
||||||
.chords(self.layer)
|
|
||||||
.iter()
|
|
||||||
.filter(|&c| c.desc_or_run().to_lowercase().contains(&lowercased))
|
|
||||||
.cloned()
|
|
||||||
.collect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render!(self.scroll(0));
|
render!(self.scroll(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn filter_chords(chords: &[ChordArc], kw: &str) -> Vec<ChordArc> {
|
||||||
|
let lowercased = kw.to_lowercase();
|
||||||
|
let mut exact = vec![];
|
||||||
|
let mut icase = vec![];
|
||||||
|
let mut contains = vec![];
|
||||||
|
let mut desc = vec![];
|
||||||
|
|
||||||
|
for c in chords {
|
||||||
|
let on = c.on();
|
||||||
|
if on.starts_with(kw) {
|
||||||
|
exact.push(c.clone());
|
||||||
|
} else if on.to_lowercase().starts_with(&lowercased) {
|
||||||
|
icase.push(c.clone());
|
||||||
|
} else if on.to_lowercase().contains(&lowercased) {
|
||||||
|
contains.push(c.clone());
|
||||||
|
} else if c.desc_or_run().to_lowercase().contains(&lowercased) {
|
||||||
|
desc.push(c.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exact.extend(icase);
|
||||||
|
exact.extend(contains);
|
||||||
|
exact.extend(desc);
|
||||||
|
exact
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Help {
|
impl Help {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue