aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/keymap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/keymap.rs')
-rw-r--r--helix-term/src/keymap.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs
index d9297e08..975274ed 100644
--- a/helix-term/src/keymap.rs
+++ b/helix-term/src/keymap.rs
@@ -303,6 +303,15 @@ impl Keymaps {
self.sticky.as_ref()
}
+ pub fn contains_key(&self, mode: Mode, key: KeyEvent) -> bool {
+ let keymaps = &*self.map();
+ let keymap = &keymaps[&mode];
+ keymap
+ .search(self.pending())
+ .and_then(KeyTrie::node)
+ .is_some_and(|node| node.contains_key(&key))
+ }
+
/// Lookup `key` in the keymap to try and find a command to execute. Escape
/// key cancels pending keystrokes. If there are no pending keystrokes but a
/// sticky node is in use, it will be cleared.