aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/input.rs
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2023-04-09 22:29:48 +0200
committerKirill Chibisov <contact@kchibisov.com>2023-04-15 03:09:27 +0300
commit586f982a260a1864f61f9aff6a861d3231bf3301 (patch)
treece8a6accf9a03db01fc1b92d2250f0e17b9f8b46 /alacritty/src/input.rs
parent8b0305d3f01bbeaedabca8dee4619bb03d8c0561 (diff)
downloadr-alacritty-586f982a260a1864f61f9aff6a861d3231bf3301.tar.gz
r-alacritty-586f982a260a1864f61f9aff6a861d3231bf3301.tar.bz2
r-alacritty-586f982a260a1864f61f9aff6a861d3231bf3301.zip
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.
Diffstat (limited to 'alacritty/src/input.rs')
-rw-r--r--alacritty/src/input.rs9
1 files changed, 9 insertions, 0 deletions
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<T: EventListener> Execute<T> 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<T: EventListener> Execute<T> 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());
},