From c1fed274cd7bce40a7080802783e70ac2c1329eb Mon Sep 17 00:00:00 2001 From: thomasschafer Date: Sat, 1 Feb 2025 17:10:18 +0000 Subject: [PATCH 1/2] Clear selection when exiting visual mode --- src/core_editor/editor.rs | 6 ++++++ src/engine.rs | 1 + 2 files changed, 7 insertions(+) diff --git a/src/core_editor/editor.rs b/src/core_editor/editor.rs index 68b8bc89..b4adcd01 100644 --- a/src/core_editor/editor.rs +++ b/src/core_editor/editor.rs @@ -202,6 +202,12 @@ impl Editor { None }; } + + /// Sets the selection anchor to None, clearing the selection + pub fn clear_selection_anchor(&mut self) { + self.selection_anchor = None; + } + fn move_to_position(&mut self, position: usize, select: bool) { self.update_selection_anchor(select); self.line_buffer.set_insertion_point(position) diff --git a/src/engine.rs b/src/engine.rs index c08a27e5..6bd3431a 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1070,6 +1070,7 @@ impl Reedline { } ReedlineEvent::Esc => { self.deactivate_menus(); + self.editor.clear_selection_anchor(); Ok(EventStatus::Handled) } ReedlineEvent::CtrlD => { From f642a3846c2205bccc5da6de6d828d8da0901e36 Mon Sep 17 00:00:00 2001 From: Thomas Schafer Date: Wed, 12 Feb 2025 19:46:02 +0000 Subject: [PATCH 2/2] Remove selection clearing specific to Vi mode --- src/core_editor/editor.rs | 6 ------ src/edit_mode/vi/mod.rs | 12 ++---------- src/engine.rs | 10 +--------- src/enums.rs | 4 ---- 4 files changed, 3 insertions(+), 29 deletions(-) diff --git a/src/core_editor/editor.rs b/src/core_editor/editor.rs index b4adcd01..68b8bc89 100644 --- a/src/core_editor/editor.rs +++ b/src/core_editor/editor.rs @@ -202,12 +202,6 @@ impl Editor { None }; } - - /// Sets the selection anchor to None, clearing the selection - pub fn clear_selection_anchor(&mut self) { - self.selection_anchor = None; - } - fn move_to_position(&mut self, position: usize, select: bool) { self.update_selection_anchor(select); self.line_buffer.set_insertion_point(position) diff --git a/src/edit_mode/vi/mod.rs b/src/edit_mode/vi/mod.rs index cc19cbd6..8d92c5e7 100644 --- a/src/edit_mode/vi/mod.rs +++ b/src/edit_mode/vi/mod.rs @@ -142,11 +142,7 @@ impl EditMode for Vi { (_, KeyModifiers::NONE, KeyCode::Esc) => { self.cache.clear(); self.mode = ViMode::Normal; - ReedlineEvent::Multiple(vec![ - ReedlineEvent::ResetSelection, - ReedlineEvent::Esc, - ReedlineEvent::Repaint, - ]) + ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint]) } (_, KeyModifiers::NONE, KeyCode::Enter) => { self.mode = ViMode::Insert; @@ -195,11 +191,7 @@ mod test { assert_eq!( result, - ReedlineEvent::Multiple(vec![ - ReedlineEvent::ResetSelection, - ReedlineEvent::Esc, - ReedlineEvent::Repaint - ]) + ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint]) ); assert!(matches!(vi.mode, ViMode::Normal)); } diff --git a/src/engine.rs b/src/engine.rs index 6bd3431a..0ec861bc 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -909,10 +909,6 @@ impl Reedline { self.input_mode = InputMode::Regular; Ok(EventStatus::Handled) } - ReedlineEvent::ResetSelection => { - self.editor.reset_selection(); - Ok(EventStatus::Handled) - } // TODO: Check if events should be handled ReedlineEvent::Right | ReedlineEvent::Left @@ -1070,7 +1066,7 @@ impl Reedline { } ReedlineEvent::Esc => { self.deactivate_menus(); - self.editor.clear_selection_anchor(); + self.editor.reset_selection(); Ok(EventStatus::Handled) } ReedlineEvent::CtrlD => { @@ -1202,10 +1198,6 @@ impl Reedline { Ok(EventStatus::Handled) } ReedlineEvent::OpenEditor => self.open_editor().map(|_| EventStatus::Handled), - ReedlineEvent::ResetSelection => { - self.editor.reset_selection(); - Ok(EventStatus::Handled) - } ReedlineEvent::Resize(width, height) => { self.painter.handle_resize(width, height); Ok(EventStatus::Handled) diff --git a/src/enums.rs b/src/enums.rs index f8e7f5d7..0a574eb1 100644 --- a/src/enums.rs +++ b/src/enums.rs @@ -748,9 +748,6 @@ pub enum ReedlineEvent { /// Open text editor OpenEditor, - - /// Reset the current text selection - ResetSelection, } impl Display for ReedlineEvent { @@ -794,7 +791,6 @@ impl Display for ReedlineEvent { ReedlineEvent::MenuPagePrevious => write!(f, "MenuPagePrevious"), ReedlineEvent::ExecuteHostCommand(_) => write!(f, "ExecuteHostCommand"), ReedlineEvent::OpenEditor => write!(f, "OpenEditor"), - ReedlineEvent::ResetSelection => write!(f, "ResetSelection"), } } }