Keymap infobox: Idiomatic body tuple.

Does not change any behavior other than making the tuple slightly
more idiomatic.  Keymap infobox shows key events, then the respective
description. This commit makes sure that order is used from the get go,
rather than flipping it midway.
pull/7085/merge
gibbz00 2023-05-29 22:01:45 +02:00 committed by Blaž Hrastnik
parent 3a0892f793
commit 19326d23d1
2 changed files with 7 additions and 7 deletions

View File

@ -77,7 +77,7 @@ impl KeyTrieNode {
} }
pub fn infobox(&self) -> Info { pub fn infobox(&self) -> Info {
let mut body: Vec<(&str, BTreeSet<KeyEvent>)> = Vec::with_capacity(self.len()); let mut body: Vec<(BTreeSet<KeyEvent>, &str)> = Vec::with_capacity(self.len());
for (&key, trie) in self.iter() { for (&key, trie) in self.iter() {
let desc = match trie { let desc = match trie {
KeyTrie::MappableCommand(cmd) => { KeyTrie::MappableCommand(cmd) => {
@ -89,14 +89,14 @@ impl KeyTrieNode {
KeyTrie::Node(n) => n.name(), KeyTrie::Node(n) => n.name(),
KeyTrie::Sequence(_) => "[Multiple commands]", KeyTrie::Sequence(_) => "[Multiple commands]",
}; };
match body.iter().position(|(d, _)| d == &desc) { match body.iter().position(|(_, d)| d == &desc) {
Some(pos) => { Some(pos) => {
body[pos].1.insert(key); body[pos].0.insert(key);
} }
None => body.push((desc, BTreeSet::from([key]))), None => body.push((BTreeSet::from([key]), desc)),
} }
} }
body.sort_unstable_by_key(|(_, keys)| { body.sort_unstable_by_key(|(keys, _)| {
self.order self.order
.iter() .iter()
.position(|&k| k == *keys.iter().next().unwrap()) .position(|&k| k == *keys.iter().next().unwrap())

View File

@ -55,10 +55,10 @@ impl Info {
} }
} }
pub fn from_keymap(title: &str, body: Vec<(&str, BTreeSet<KeyEvent>)>) -> Self { pub fn from_keymap(title: &str, body: Vec<(BTreeSet<KeyEvent>, &str)>) -> Self {
let body: Vec<_> = body let body: Vec<_> = body
.into_iter() .into_iter()
.map(|(desc, events)| { .map(|(events, desc)| {
let events = events.iter().map(ToString::to_string).collect::<Vec<_>>(); let events = events.iter().map(ToString::to_string).collect::<Vec<_>>();
(events.join(", "), desc) (events.join(", "), desc)
}) })