diff options
| author | Brooks Rady <b.j.rady@gmail.com> | 2021-02-23 17:56:13 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-23 17:56:13 +0000 |
| commit | a82cc8fbcbc4c89afe96450cfc2472009887215b (patch) | |
| tree | 6a70d62ea699d0cc4c12a60c298ab4a779d61054 /src | |
| parent | build(fix the CI with the new build system) (diff) | |
| parent | fix(input) Write user input only in Normal mode (diff) | |
| download | sl0ppij-a82cc8fbcbc4c89afe96450cfc2472009887215b.tar.gz sl0ppij-a82cc8fbcbc4c89afe96450cfc2472009887215b.tar.xz sl0ppij-a82cc8fbcbc4c89afe96450cfc2472009887215b.zip | |
fix(input is now only forwarded in normal mode)
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/input/actions.rs | 2 | ||||
| -rw-r--r-- | src/common/input/handler.rs | 1 | ||||
| -rw-r--r-- | src/common/input/keybinds.rs | 17 |
3 files changed, 12 insertions, 8 deletions
diff --git a/src/common/input/actions.rs b/src/common/input/actions.rs index 7193b46e..00c18c1e 100644 --- a/src/common/input/actions.rs +++ b/src/common/input/actions.rs @@ -39,6 +39,8 @@ pub enum Action { CloseFocus, /// Create a new tab. NewTab, + /// Do nothing. + NoOp, /// Go to the next tab. GoToNextTab, /// Go to the previous tab. diff --git a/src/common/input/handler.rs b/src/common/input/handler.rs index 4d1e4f44..2a8c3bfa 100644 --- a/src/common/input/handler.rs +++ b/src/common/input/handler.rs @@ -227,6 +227,7 @@ impl InputHandler { .unwrap(); self.command_is_executing.wait_until_pane_is_closed(); } + Action::NoOp => {} } should_break diff --git a/src/common/input/keybinds.rs b/src/common/input/keybinds.rs index 151d3495..c573a557 100644 --- a/src/common/input/keybinds.rs +++ b/src/common/input/keybinds.rs @@ -165,15 +165,16 @@ pub fn key_to_actions( mode: &InputMode, keybinds: &Keybinds, ) -> Vec<Action> { - if let Some(mode_keybinds) = keybinds.get(mode) { - mode_keybinds + let mode_keybind_or_action = |action: Action| { + keybinds + .get(mode) + .unwrap_or_else(|| unreachable!("Unrecognized mode: {:?}", mode)) .get(key) .cloned() - // FIXME in command mode, unbound keystrokes should probably do nothing instead of - // writing to the terminal. Will be easier to implement after a big refactor of the - // input system (@categorille) - .unwrap_or_else(|| vec![Action::Write(input)]) - } else { - unreachable!("Unrecognized mode: {:?}", mode); + .unwrap_or_else(|| vec![action]) + }; + match *mode { + InputMode::Normal => mode_keybind_or_action(Action::Write(input)), + _ => mode_keybind_or_action(Action::NoOp), } } |
