From 9aaf9dfd3882c12b6aab5604cc2567fc3b64127b Mon Sep 17 00:00:00 2001 From: aiongg Date: Tue, 20 Oct 2026 15:46:00 +0000 Subject: [PATCH] keymap: format, and keep the dispatcher's Default clear of clippy's derive lint --- crates/keymap/src/egui.rs | 19 ++++++++++--------- crates/keymap/src/scope.rs | 5 +---- crates/keymap/tests/import.rs | 10 ++++++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/crates/keymap/src/egui.rs b/crates/keymap/src/egui.rs index d50797d65..c40bcea8c 100644 --- a/crates/keymap/src/egui.rs +++ b/crates/keymap/src/egui.rs @@ -238,9 +238,12 @@ pub struct Dispatcher { text_first: bool, } +/// eframe's web build sends a press's Text event first when no text field has focus. +const TEXT_FIRST: bool = cfg!(target_arch = "wasm32"); + impl Default for Dispatcher { fn default() -> Dispatcher { - Dispatcher { last: None, repeat: false, clipboard: false, text_first: cfg!(target_arch = "wasm32") } + Dispatcher { last: None, repeat: false, clipboard: false, text_first: TEXT_FIRST } } } @@ -300,11 +303,8 @@ impl Dispatcher { let held = Mods::from_egui(modifiers, platform); if let Some(key) = Key::from_egui(*key) { let plain_clip = is_plain_clipboard(key, held); - let keep = if active.typing { - text_of[i].is_some() || plain_clip - } else { - !self.clipboard && plain_clip && causes[i].is_some() - }; + let keep = + if active.typing { text_of[i].is_some() || plain_clip } else { !self.clipboard && plain_clip && causes[i].is_some() }; if keep { if let Some((j, _)) = causes[i] { caused_taken[j] = Some(false); @@ -374,9 +374,10 @@ impl Dispatcher { if repeat { return find(false); } - let again = self.last.as_ref().is_some_and(|l| { - l.chord == first && !l.ran_double && l.panel.as_deref() == active.panel && now >= l.at && now - l.at < DOUBLE_PRESS - }); + let again = self + .last + .as_ref() + .is_some_and(|l| l.chord == first && !l.ran_double && l.panel.as_deref() == active.panel && now >= l.at && now - l.at < DOUBLE_PRESS); let double = if again { find(true) } else { None }; self.last = Some(LastPress { chord: first, at: now, ran_double: double.is_some(), panel: active.panel.map(str::to_owned) }); double.or_else(|| find(false)) diff --git a/crates/keymap/src/scope.rs b/crates/keymap/src/scope.rs index 26b94e496..90b29e1e3 100644 --- a/crates/keymap/src/scope.rs +++ b/crates/keymap/src/scope.rs @@ -20,10 +20,7 @@ impl Scope { /// character, or one with whitespace at either end, which binding text would lose. pub fn new(name: impl Into) -> Option { let name = name.into(); - let ok = !name.is_empty() - && name.len() <= MAX_SCOPE_NAME - && name.trim() == name - && !name.chars().any(|c| c == ':' || c.is_control()); + let ok = !name.is_empty() && name.len() <= MAX_SCOPE_NAME && name.trim() == name && !name.chars().any(|c| c == ':' || c.is_control()); ok.then_some(Scope(name)) } diff --git a/crates/keymap/tests/import.rs b/crates/keymap/tests/import.rs index c9c67dc31..dd66bcb6e 100644 --- a/crates/keymap/tests/import.rs +++ b/crates/keymap/tests/import.rs @@ -341,7 +341,9 @@ fn changes_that_find_the_overrides_full_are_reported() { let rows = |failed: &[Failed]| -> Vec<(String, String, FailedChange, Vec)> { failed.iter().map(|f| (f.command.id.clone(), f.label.clone(), f.change, f.shortcuts.clone())).collect() }; - let row = |id: &str, label: &str, change, shortcuts: &[&str]| (id.to_string(), label.to_string(), change, shortcuts.iter().map(|s| s.to_string()).collect::>()); + let row = |id: &str, label: &str, change, shortcuts: &[&str]| { + (id.to_string(), label.to_string(), change, shortcuts.iter().map(|s| s.to_string()).collect::>()) + }; assert_eq!( rows(&r.failed), [ @@ -395,7 +397,11 @@ fn keys_in_unknown_scopes_are_skipped_and_the_rest_apply() { let mut km = keymap(Platform::Windows); let r = plan(&set, &km, &options).apply(&mut km); has(&km, "file.close", &["Cmd+Q", "Text: Cmd+L"]); - let skipped: Vec<_> = r.skipped.iter().map(|s: &Skipped| (s.command.id.as_str(), s.item.as_str(), s.line, s.shortcut.as_str(), s.kept_by.clone(), s.reason)).collect(); + let skipped: Vec<_> = r + .skipped + .iter() + .map(|s: &Skipped| (s.command.id.as_str(), s.item.as_str(), s.line, s.shortcut.as_str(), s.kept_by.clone(), s.reason)) + .collect(); assert_eq!(skipped, [("file.close", "File > Close", None, "Story: Cmd+K", None, SkipReason::UnknownScope)]); assert_eq!(serde_json::to_value(r.skipped[0].reason).unwrap(), "unknownScope"); }