fix(input) Write user input only in Normal mode

closes 184

Added the Action::NoOp from
https://github.com/zellij-org/zellij/issues/184
This commit is contained in:
a-kenji 2021-02-22 16:49:37 +01:00
parent dbbb0792c9
commit f3f23972eb
3 changed files with 12 additions and 8 deletions

View file

@ -39,6 +39,8 @@ pub enum Action {
CloseFocus, CloseFocus,
/// Create a new tab. /// Create a new tab.
NewTab, NewTab,
/// Do nothing.
NoOp,
/// Go to the next tab. /// Go to the next tab.
GoToNextTab, GoToNextTab,
/// Go to the previous tab. /// Go to the previous tab.

View file

@ -227,6 +227,7 @@ impl InputHandler {
.unwrap(); .unwrap();
self.command_is_executing.wait_until_pane_is_closed(); self.command_is_executing.wait_until_pane_is_closed();
} }
Action::NoOp => {}
} }
should_break should_break

View file

@ -165,15 +165,16 @@ pub fn key_to_actions(
mode: &InputMode, mode: &InputMode,
keybinds: &Keybinds, keybinds: &Keybinds,
) -> Vec<Action> { ) -> Vec<Action> {
if let Some(mode_keybinds) = keybinds.get(mode) { let mode_keybind_or_action = |action: Action| {
mode_keybinds keybinds
.get(mode)
.unwrap_or_else(|| unreachable!("Unrecognized mode: {:?}", mode))
.get(key) .get(key)
.cloned() .cloned()
// FIXME in command mode, unbound keystrokes should probably do nothing instead of .unwrap_or_else(|| vec![action])
// writing to the terminal. Will be easier to implement after a big refactor of the };
// input system (@categorille) match *mode {
.unwrap_or_else(|| vec![Action::Write(input)]) InputMode::Normal => mode_keybind_or_action(Action::Write(input)),
} else { _ => mode_keybind_or_action(Action::NoOp),
unreachable!("Unrecognized mode: {:?}", mode);
} }
} }