From f29ba723df0f51225bd3069e0f67862dd643ad32 Mon Sep 17 00:00:00 2001 From: Levi Olorenshaw Date: Wed, 23 Jun 2021 21:26:13 +1000 Subject: [PATCH] add bindings q and ESC for exit if no popup visible --- src/app.rs | 14 +++++++++++++- src/keys.rs | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index 38fef807..b98f0183 100644 --- a/src/app.rs +++ b/src/app.rs @@ -261,7 +261,7 @@ impl App { log::trace!("event: {:?}", ev); if let InputEvent::Input(ev) = ev { - if self.check_quit_key(ev) { + if self.check_quit_key(ev) || self.check_weak_quit_key(ev) { return Ok(()); } @@ -451,6 +451,18 @@ impl App { msg ] ); + + fn check_weak_quit_key(&mut self, ev: Event) -> bool { + if self.any_popup_visible() { return false } + if let Event::Key(e) = ev { + if e == self.key_config.exit_if_no_popup || + e == self.key_config.exit_popup { + self.do_quit = true; + return true; + } + } + false + } fn check_quit_key(&mut self, ev: Event) -> bool { if let Event::Key(e) = ev { diff --git a/src/keys.rs b/src/keys.rs index 9ace9525..0a6c6b05 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -34,6 +34,7 @@ pub struct KeyConfig { pub focus_above: KeyEvent, pub focus_below: KeyEvent, pub exit: KeyEvent, + pub exit_if_no_popup: KeyEvent, pub exit_popup: KeyEvent, pub open_commit: KeyEvent, pub open_commit_editor: KeyEvent, @@ -101,6 +102,7 @@ impl Default for KeyConfig { focus_above: KeyEvent { code: KeyCode::Up, modifiers: KeyModifiers::empty()}, focus_below: KeyEvent { code: KeyCode::Down, modifiers: KeyModifiers::empty()}, exit: KeyEvent { code: KeyCode::Char('c'), modifiers: KeyModifiers::CONTROL}, + exit_if_no_popup: KeyEvent { code: KeyCode::Char('q'), modifiers: KeyModifiers::empty()}, exit_popup: KeyEvent { code: KeyCode::Esc, modifiers: KeyModifiers::empty()}, open_commit: KeyEvent { code: KeyCode::Char('c'), modifiers: KeyModifiers::empty()}, open_commit_editor: KeyEvent { code: KeyCode::Char('e'), modifiers:KeyModifiers::CONTROL},