diff options
author | Christian Duerr <contact@christianduerr.com> | 2020-12-19 04:07:20 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-19 04:07:20 +0000 |
commit | 8a7f8c9d3eca214578439da417d37395971a711d (patch) | |
tree | 38040e9f123a8835794cb19557483eeeccd27781 /alacritty/src/event.rs | |
parent | 116faba7c607f1b2cb56c390d44b33a52603f642 (diff) | |
download | r-alacritty-8a7f8c9d3eca214578439da417d37395971a711d.tar.gz r-alacritty-8a7f8c9d3eca214578439da417d37395971a711d.tar.bz2 r-alacritty-8a7f8c9d3eca214578439da417d37395971a711d.zip |
Add separate mode for search bindings
Diffstat (limited to 'alacritty/src/event.rs')
-rw-r--r-- | alacritty/src/event.rs | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs index 441cb21e..db3c84fb 100644 --- a/alacritty/src/event.rs +++ b/alacritty/src/event.rs @@ -418,6 +418,12 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon #[inline] fn confirm_search(&mut self) { + // Just cancel search when not in vi mode. + if !self.terminal.mode().contains(TermMode::VI) { + self.cancel_search(); + return; + } + // Force unlimited search if the previous one was interrupted. if self.scheduler.scheduled(TimerId::DelayedSearch) { self.goto_match(None); @@ -445,22 +451,24 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon } #[inline] - fn push_search(&mut self, c: char) { + fn search_input(&mut self, c: char) { if let Some(regex) = self.search_state.regex.as_mut() { + match c { + // Handle backspace/ctrl+h. + '\x08' | '\x7f' => { + let _ = regex.pop(); + }, + // Add ascii and unicode text. + ' '..='~' | '\u{a0}'..='\u{10ffff}' => regex.push(c), + // Ignore non-printable characters. + _ => return, + } + if !self.terminal.mode().contains(TermMode::VI) { // Clear selection so we do not obstruct any matches. self.terminal.selection = None; } - regex.push(c); - self.update_search(); - } - } - - #[inline] - fn pop_search(&mut self) { - if let Some(regex) = self.search_state.regex.as_mut() { - regex.pop(); self.update_search(); } } |