summaryrefslogtreecommitdiffstats
path: root/alacritty/src/event.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/event.rs')
-rw-r--r--alacritty/src/event.rs22
1 files changed, 19 insertions, 3 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index f06b818e..56e5b841 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -25,8 +25,8 @@ use log::info;
use serde_json as json;
#[cfg(target_os = "macos")]
-use font::set_font_smoothing;
-use font::{self, Size};
+use crossfont::set_font_smoothing;
+use crossfont::{self, Size};
use alacritty_terminal::config::LOG_TARGET_CONFIG;
use alacritty_terminal::event::{Event as TerminalEvent, EventListener, Notify, OnResize};
@@ -99,6 +99,16 @@ impl SearchState {
fn new() -> Self {
Self::default()
}
+
+ /// Search regex text if a search is active.
+ pub fn regex(&self) -> Option<&String> {
+ self.regex.as_ref()
+ }
+
+ /// Direction of the search from the search origin.
+ pub fn direction(&self) -> Direction {
+ self.direction
+ }
}
impl Default for SearchState {
@@ -402,6 +412,11 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
#[inline]
fn push_search(&mut self, c: char) {
if let Some(regex) = self.search_state.regex.as_mut() {
+ // Prevent previous search selections from sticking around when not in vi mode.
+ if !self.terminal.mode().contains(TermMode::VI) {
+ self.terminal.selection = None;
+ }
+
regex.push(c);
self.update_search();
}
@@ -586,6 +601,7 @@ impl<'a, N: Notify + 'a, T: EventListener> ActionContext<'a, N, T> {
fn absolute_origin(&self) -> Point<usize> {
let mut relative_origin = self.search_state.origin;
relative_origin.line = min(relative_origin.line, self.terminal.screen_lines() - 1);
+ relative_origin.col = min(relative_origin.col, self.terminal.cols() - 1);
let mut origin = self.terminal.visible_to_buffer(relative_origin);
origin.line = (origin.line as isize + self.search_state.display_offset_delta) as usize;
origin
@@ -831,7 +847,7 @@ impl<N: Notify + OnResize> Processor<N> {
&self.config,
&self.mouse,
self.modifiers,
- self.search_state.regex.as_ref(),
+ &self.search_state,
);
}
});