From 586f982a260a1864f61f9aff6a861d3231bf3301 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sun, 9 Apr 2023 22:29:48 +0200 Subject: Allow mode-exclusive bindings in any mode This patch enables binding chains that go beyond mode changes by allowing bindings to be defined for modes they do not usually have an effect in. --- alacritty/src/input.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'alacritty/src/input.rs') diff --git a/alacritty/src/input.rs b/alacritty/src/input.rs index 992b01df..935fc046 100644 --- a/alacritty/src/input.rs +++ b/alacritty/src/input.rs @@ -14,6 +14,7 @@ use std::marker::PhantomData; use std::mem; use std::time::{Duration, Instant}; +use log::debug; use winit::dpi::PhysicalPosition; use winit::event::{ ElementState, KeyboardInput, ModifiersState, MouseButton, MouseScrollDelta, @@ -162,6 +163,11 @@ impl Execute for Action { ctx.on_typing_start(); ctx.toggle_vi_mode() }, + action @ (Action::ViMotion(_) | Action::Vi(_)) + if !ctx.terminal().mode().contains(TermMode::VI) => + { + debug!("Ignoring {action:?}: Vi mode inactive"); + }, Action::ViMotion(motion) => { ctx.on_typing_start(); ctx.terminal_mut().vi_motion(*motion); @@ -246,6 +252,9 @@ impl Execute for Action { ctx.scroll(Scroll::Delta(scroll_lines)); }, + action @ Action::Search(_) if !ctx.search_active() => { + debug!("Ignoring {action:?}: Search mode inactive"); + }, Action::Search(SearchAction::SearchFocusNext) => { ctx.advance_search_origin(ctx.search_direction()); }, -- cgit