@@ -654,63 +654,67 @@ pub fn merge_keys(mut config: Config) -> Config {
657−#[test]
657+#[cfg(test)]
658−fn merge_partial_keys() {
661+ fn merge_partial_keys() {
659− let config = Config {
662+ let config = Config {
660− keys: Keymaps(hashmap! {
663+ keys: Keymaps(hashmap! {
661− Mode::Normal => Keymap::new(
664+ Mode::Normal => Keymap::new(
662− keymap!({ "Normal mode"
665+ keymap!({ "Normal mode"
663− "i" => normal_mode,
666+ "i" => normal_mode,
664− "无" => insert_mode,
667+ "无" => insert_mode,
665− "z" => jump_backward,
668+ "z" => jump_backward,
666− "g" => { "Merge into goto mode"
669+ "g" => { "Merge into goto mode"
667− "$" => goto_line_end,
670+ "$" => goto_line_end,
668− "g" => delete_char_forward,
671+ "g" => delete_char_forward,
673− ..Default::default()
676+ ..Default::default()
675− let mut merged_config = merge_keys(config.clone());
678+ let mut merged_config = merge_keys(config.clone());
676− assert_ne!(config, merged_config);
679+ assert_ne!(config, merged_config);
678− let keymap = merged_config.keys.0.get_mut(&Mode::Normal).unwrap();
681+ let keymap = merged_config.keys.0.get_mut(&Mode::Normal).unwrap();
679− assert_eq!(
682+ assert_eq!(
680− keymap.get(key!('i')).kind,
683+ keymap.get(key!('i')).kind,
681− KeymapResultKind::Matched(Command::normal_mode),
684+ KeymapResultKind::Matched(Command::normal_mode),
682− "Leaf should replace leaf"
685+ "Leaf should replace leaf"
684− assert_eq!(
687+ assert_eq!(
685− keymap.get(key!('无')).kind,
688+ keymap.get(key!('无')).kind,
686− KeymapResultKind::Matched(Command::insert_mode),
689+ KeymapResultKind::Matched(Command::insert_mode),
687− "New leaf should be present in merged keymap"
690+ "New leaf should be present in merged keymap"
689− // Assumes that z is a node in the default keymap
692+ // Assumes that z is a node in the default keymap
690− assert_eq!(
693+ assert_eq!(
691− keymap.get(key!('z')).kind,
694+ keymap.get(key!('z')).kind,
692− KeymapResultKind::Matched(Command::jump_backward),
695+ KeymapResultKind::Matched(Command::jump_backward),
693− "Leaf should replace node"
696+ "Leaf should replace node"
695− // Assumes that `g` is a node in default keymap
698+ // Assumes that `g` is a node in default keymap
696− assert_eq!(
699+ assert_eq!(
697− keymap.root().search(&[key!('g'), key!('$')]).unwrap(),
700+ keymap.root().search(&[key!('g'), key!('$')]).unwrap(),
698− &KeyTrie::Leaf(Command::goto_line_end),
701+ &KeyTrie::Leaf(Command::goto_line_end),
699− "Leaf should be present in merged subnode"
702+ "Leaf should be present in merged subnode"
701− // Assumes that `gg` is in default keymap
704+ // Assumes that `gg` is in default keymap
702− assert_eq!(
705+ assert_eq!(
703− keymap.root().search(&[key!('g'), key!('g')]).unwrap(),
706+ keymap.root().search(&[key!('g'), key!('g')]).unwrap(),
704− &KeyTrie::Leaf(Command::delete_char_forward),
707+ &KeyTrie::Leaf(Command::delete_char_forward),
705− "Leaf should replace old leaf in merged subnode"
708+ "Leaf should replace old leaf in merged subnode"
707− // Assumes that `ge` is in default keymap
710+ // Assumes that `ge` is in default keymap
708− assert_eq!(
711+ assert_eq!(
709− keymap.root().search(&[key!('g'), key!('e')]).unwrap(),
712+ keymap.root().search(&[key!('g'), key!('e')]).unwrap(),
710− &KeyTrie::Leaf(Command::goto_last_line),
713+ &KeyTrie::Leaf(Command::goto_last_line),
711− "Old leaves in subnode should be present in merged node"
714+ "Old leaves in subnode should be present in merged node"
714− assert!(merged_config.keys.0.get(&Mode::Normal).unwrap().len() > 1);
717+ assert!(merged_config.keys.0.get(&Mode::Normal).unwrap().len() > 1);
715− assert!(merged_config.keys.0.get(&Mode::Insert).unwrap().len() > 0);
718+ assert!(merged_config.keys.0.get(&Mode::Insert).unwrap().len() > 0);