diff options
author | Gokul Soumya | 2021-11-10 06:15:32 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-11-10 15:58:25 +0000 |
commit | f9e9efb3ecc4aa22c270c043f7442791e810940c (patch) | |
tree | 299882e8f5994e12daa72daba23a6d2c82297e31 | |
parent | 80036b8bd3f7815b3256aae20a17b31efc104fbd (diff) |
Check for duplicate keys in default keymap
-rw-r--r-- | helix-term/src/keymap.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index b41c950b..53e0d450 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -64,10 +64,11 @@ macro_rules! keymap { $( $( let _key = $key.parse::<::helix_view::input::KeyEvent>().unwrap(); - _map.insert( + let _duplicate = _map.insert( _key, keymap!(@trie $value) ); + debug_assert!(_duplicate.is_none(), "Duplicate key found: {:?}", _duplicate.unwrap()); _order.push(_key); )+ )* @@ -691,6 +692,22 @@ pub fn merge_keys(mut config: Config) -> Config { #[cfg(test)] mod tests { use super::*; + + #[test] + #[should_panic] + fn duplicate_keys_should_panic() { + keymap!({ "Normal mode" + "i" => normal_mode, + "i" => goto_definition, + }); + } + + #[test] + fn check_duplicate_keys_in_default_keymap() { + // will panic on duplicate keys, assumes that `Keymaps` uses keymap! macro + Keymaps::default(); + } + #[test] fn merge_partial_keys() { let config = Config { |