diff options
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r-- | helix-term/src/commands.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 61c647d0..b8324b65 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1895,7 +1895,9 @@ fn searcher(cx: &mut Context, direction: Direction) { .collect() }, move |editor, regex, event| { - if !matches!(event, PromptEvent::Update | PromptEvent::Validate) { + if event == PromptEvent::Validate { + editor.registers.last_search_register = reg; + } else if event != PromptEvent::Update { return; } search_impl( @@ -1914,7 +1916,9 @@ fn searcher(cx: &mut Context, direction: Direction) { fn search_next_or_prev_impl(cx: &mut Context, movement: Movement, direction: Direction) { let count = cx.count(); - let register = cx.register.unwrap_or('/'); + let register = cx + .register + .unwrap_or(cx.editor.registers.last_search_register); let config = cx.editor.config(); let scrolloff = config.scrolloff; if let Some(query) = cx.editor.registers.first(register, cx.editor) { @@ -1982,13 +1986,21 @@ fn search_selection(cx: &mut Context) { let msg = format!("register '{}' set to '{}'", register, ®ex); match cx.editor.registers.push(register, regex) { - Ok(_) => cx.editor.set_status(msg), + Ok(_) => { + cx.editor.registers.last_search_register = register; + cx.editor.set_status(msg) + } Err(err) => cx.editor.set_error(err.to_string()), } } fn make_search_word_bounded(cx: &mut Context) { - let register = cx.register.unwrap_or('/'); + // Defaults to the active search register instead `/` to be more ergonomic assuming most people + // would use this command following `search_selection`. This avoids selecting the register + // twice. + let register = cx + .register + .unwrap_or(cx.editor.registers.last_search_register); let regex = match cx.editor.registers.first(register, cx.editor) { Some(regex) => regex, None => return, @@ -2014,7 +2026,10 @@ fn make_search_word_bounded(cx: &mut Context) { let msg = format!("register '{}' set to '{}'", register, &new_regex); match cx.editor.registers.push(register, new_regex) { - Ok(_) => cx.editor.set_status(msg), + Ok(_) => { + cx.editor.registers.last_search_register = register; + cx.editor.set_status(msg) + } Err(err) => cx.editor.set_error(err.to_string()), } } @@ -2078,6 +2093,7 @@ fn global_search(cx: &mut Context) { if event != PromptEvent::Validate { return; } + editor.registers.last_search_register = reg; let documents: Vec<_> = editor .documents() |