From c10888b0f09970d5def03f81b109f262b6f0b015 Mon Sep 17 00:00:00 2001 From: a5ob7r <12132068+a5ob7r@users.noreply.github.com> Date: Mon, 23 May 2022 09:01:46 +0900 Subject: [PATCH] Fix selection change after leaving vi-mode This patch fixes that the right point of the selection range moves to another point when leaves vi-mode with a selection by ToggleViMode. The cause is that always moves a vi-mode cursor to a search origin whether or not the current search is active. This problem is a regression which is introduced by #5945. --- alacritty/src/event.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs index c645a526..9d6f843c 100644 --- a/alacritty/src/event.rs +++ b/alacritty/src/event.rs @@ -770,7 +770,7 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext for ActionCon if self.terminal.mode().contains(TermMode::VI) { // If we had search running when leaving Vi mode we should mark terminal fully damaged // to cleanup highlighted results. - if self.search_state.dfas().is_some() { + if self.search_state.dfas.take().is_some() { self.terminal.mark_fully_damaged(); } else { // Damage line indicator and Vi cursor. @@ -781,7 +781,10 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext for ActionCon self.clear_selection(); } - self.cancel_search(); + if self.search_active() { + self.cancel_search(); + } + self.terminal.toggle_vi_mode(); *self.dirty = true;