From 50c4ab8defaac96174e9d5782b032091c6f37a36 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sun, 17 Jan 2021 17:05:29 +0100 Subject: Make bindings able to handle multiple caller strings Signed-off-by: Matthias Beyer --- src/bindings.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bindings.rs b/src/bindings.rs index 3b4587c..9907bdc 100644 --- a/src/bindings.rs +++ b/src/bindings.rs @@ -20,7 +20,7 @@ use crate::main_view::MainView; pub fn get_bindings() -> Bindings { Bindings(vec![ Binding { - chars: vec!['q'], + chars: ["quit", "q"].iter().map(ToString::to_string).collect(), callback: Callback::from_fn(|siv: &mut Cursive| { trace!("Callback called: q"); let continue_running = siv.call_on_name(crate::main_view::MAIN_VIEW_NAME, |mv: &mut MainView| { @@ -49,7 +49,7 @@ pub fn get_bindings() -> Bindings { }, Binding { - chars: vec!['o'], + chars: ["open", "o"].iter().map(ToString::to_string).collect(), callback: Callback::from_fn(MainView::add_notmuch_query_layer), } ]) @@ -72,12 +72,12 @@ impl Bindings { #[derive(Clone)] pub struct Binding { - chars: Vec, + chars: Vec, callback: Callback, } impl Binding { - pub fn for_events(chars: Vec, callback: Callback) -> Binding { + pub fn for_events(chars: Vec, callback: Callback) -> Binding { Binding { chars, callback } } } @@ -103,7 +103,8 @@ impl BindingCaller { .iter() .find(|binding| { trace!("chars {:?} == state {:?}", binding.chars, self.state); - binding.chars == self.state + let state_str = self.state.iter().collect::(); + binding.chars.iter().any(|state| *state == state_str) }) .map(|binding| { trace!("Binding found"); -- cgit v1.2.3