From 0d82d9ab176f9d08a45e583dababa52b273747f2 Mon Sep 17 00:00:00 2001 From: Jordan MacDonald Date: Thu, 25 Jul 2024 16:42:10 -0400 Subject: [PATCH] Fix search mode reset behaviour Resetting this mode should clear its input and results. That said, we don't want to reset automatically when entering this mode, because that breaks jumping to the next result from normal mode. --- src/commands/application.rs | 3 --- src/commands/search.rs | 6 +++--- src/input/key_map/default.yml | 4 ++-- src/models/application/modes/search.rs | 2 ++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/commands/application.rs b/src/commands/application.rs index 95384f6e..cc8ebc6a 100644 --- a/src/commands/application.rs +++ b/src/commands/application.rs @@ -189,9 +189,6 @@ pub fn switch_to_select_line_mode(app: &mut Application) -> Result { pub fn switch_to_search_mode(app: &mut Application) -> Result { if app.workspace.current_buffer.is_some() { app.switch_to(ModeKey::Search); - if let Mode::Search(ref mut mode) = app.mode { - mode.reset(); - } } else { bail!(BUFFER_MISSING); } diff --git a/src/commands/search.rs b/src/commands/search.rs index 4ba7e4f3..72d88d8e 100644 --- a/src/commands/search.rs +++ b/src/commands/search.rs @@ -67,11 +67,11 @@ pub fn accept_query(app: &mut Application) -> Result { Ok(()) } -pub fn clear_query(app: &mut Application) -> Result { +pub fn reset(app: &mut Application) -> Result { if let Mode::Search(ref mut mode) = app.mode { - mode.input = None; + mode.reset(); } else { - bail!("Can't clear search outside of search mode"); + bail!("Can't reset search outside of search mode"); }; Ok(()) diff --git a/src/input/key_map/default.yml b/src/input/key_map/default.yml index bf8b39e9..83557a79 100644 --- a/src/input/key_map/default.yml +++ b/src/input/key_map/default.yml @@ -58,7 +58,7 @@ normal: "#": application::switch_to_syntax_mode /: - application::switch_to_search_mode - - search::clear_query + - search::reset ",": view::scroll_up ">": buffer::indent_line "<": buffer::outdent_line @@ -125,7 +125,7 @@ search: - search::run /: - application::switch_to_search_mode - - search::clear_query + - search::reset m: view::scroll_down ",": view::scroll_up n: search::move_to_next_result diff --git a/src/models/application/modes/search.rs b/src/models/application/modes/search.rs index 864604ca..e508aaf6 100644 --- a/src/models/application/modes/search.rs +++ b/src/models/application/modes/search.rs @@ -20,6 +20,8 @@ impl SearchMode { pub fn reset(&mut self) { self.insert = true; + self.input = None; + self.results = None; } pub fn insert_mode(&self) -> bool {