From 76f8bdc558d3df10ff575aa710160f9e52fdcadf Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sun, 15 Nov 2020 21:02:06 +0200 Subject: [PATCH] Add configurable shortcut for 'quit' Quit ('q' button) was hardcoded, switch to configurable shortcut setting instead. --- docs/meli.conf.5 | 4 ++++ src/bin.rs | 3 ++- src/conf/shortcuts.rs | 1 + src/state.rs | 5 ++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/meli.conf.5 b/docs/meli.conf.5 index 8c3864532..cc6e3c13e 100644 --- a/docs/meli.conf.5 +++ b/docs/meli.conf.5 @@ -472,6 +472,10 @@ exit_thread = 'i' Toggle help and shortcuts view. .\" default value .Pq Em \&? +.It Ic quit +Quit application. +.\" default value +.Pq Ql Em q .It Ic enter_command_mode Enter .Em COMMAND diff --git a/src/bin.rs b/src/bin.rs index 586e94b85..73c2f246a 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -375,6 +375,7 @@ fn run_app(opt: Opt) -> Result<()> { .general .enter_command_mode .clone(); + let quit_key: Key = state.context.settings.shortcuts.general.quit.clone(); /* Keep track of the input mode. See UIMode for details */ 'main: loop { @@ -421,7 +422,7 @@ fn run_app(opt: Opt) -> Result<()> { match state.mode { UIMode::Normal => { match k { - Key::Char('q') | Key::Char('Q') => { + _ if k == quit_key => { if state.can_quit_cleanly() { drop(state); break 'main; diff --git a/src/conf/shortcuts.rs b/src/conf/shortcuts.rs index bfdfc9b9a..e40b58ca6 100644 --- a/src/conf/shortcuts.rs +++ b/src/conf/shortcuts.rs @@ -216,6 +216,7 @@ shortcut_key_values! { "general", pub struct GeneralShortcuts { toggle_help |> "Toggle help and shortcuts view." |> Key::Char('?'), enter_command_mode |> "Enter COMMAND mode." |> Key::Char(':'), + quit |> "Quit meli." |> Key::Char('q'), go_to_tab |> "Go to the nth tab" |> Key::Alt('n'), next_tab |> "Next tab." |> Key::Char('T'), scroll_right |> "Generic scroll right (catch-all setting)" |> Key::Right, diff --git a/src/state.rs b/src/state.rs index 2cd18b0af..009d5328a 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1034,7 +1034,10 @@ impl State { Quit => { self.context .sender - .send(ThreadEvent::Input((Key::Char('q'), vec![b'q']))) + .send(ThreadEvent::Input(( + self.context.settings.shortcuts.general.quit.clone(), + vec![], + ))) .unwrap(); } v => {