diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..fa54aff1 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,8 @@ +# https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file +[toolchain] +# can be further pinned eg: +# date: "stable-2020-07-10" +# version: "nightly-1.0.0" +channel = "stable" +components = [ "rustfmt", "rust-src", "clippy", "rust-analysis"] +# targets = [ ] 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 { - 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), } }