aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/event.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/event.rs')
-rw-r--r--alacritty/src/event.rs45
1 files changed, 27 insertions, 18 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index bed4d5fe..7faf380e 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -42,9 +42,9 @@ use alacritty_terminal::tty;
use crate::cli::Options as CLIOptions;
use crate::clipboard::Clipboard;
-use crate::config;
-use crate::config::Config;
+use crate::config::{self, Config};
use crate::daemon::start_daemon;
+use crate::display::hint::HintState;
use crate::display::window::Window;
use crate::display::{Display, DisplayUpdate};
use crate::input::{self, ActionContext as _, FONT_SIZE_STEP};
@@ -61,7 +61,7 @@ pub const TYPING_SEARCH_DELAY: Duration = Duration::from_millis(500);
const MAX_SEARCH_WHILE_TYPING: Option<usize> = Some(1000);
/// Maximum number of search terms stored in the history.
-const MAX_HISTORY_SIZE: usize = 255;
+const MAX_SEARCH_HISTORY_SIZE: usize = 255;
/// Events dispatched through the UI event loop.
#[derive(Debug, Clone)]
@@ -117,10 +117,6 @@ pub struct SearchState {
}
impl SearchState {
- fn new() -> Self {
- Self::default()
- }
-
/// Search regex text if a search is active.
pub fn regex(&self) -> Option<&String> {
self.history_index.and_then(|index| self.history.get(index))
@@ -440,7 +436,7 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
// Only create new history entry if the previous regex wasn't empty.
if self.search_state.history.get(0).map_or(true, |regex| !regex.is_empty()) {
self.search_state.history.push_front(String::new());
- self.search_state.history.truncate(MAX_HISTORY_SIZE);
+ self.search_state.history.truncate(MAX_SEARCH_HISTORY_SIZE);
}
self.search_state.history_index = Some(0);
@@ -660,6 +656,16 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
}
}
+ fn hint_state(&mut self) -> &mut HintState {
+ &mut self.display.hint_state
+ }
+
+ /// Process a new character for keyboard hints.
+ fn hint_input(&mut self, c: char) {
+ self.display.hint_state.keyboard_input(self.terminal, c);
+ *self.dirty = true;
+ }
+
/// Toggle the vi mode status.
#[inline]
fn toggle_vi_mode(&mut self) {
@@ -951,19 +957,19 @@ impl<N: Notify + OnResize> Processor<N> {
cli_options: CLIOptions,
) -> Processor<N> {
Processor {
- notifier,
- mouse: Default::default(),
- received_count: 0,
- suppress_chars: false,
- modifiers: Default::default(),
font_size: config.ui_config.font.size(),
- config,
message_buffer,
- display,
- event_queue: Vec::new(),
- search_state: SearchState::new(),
cli_options,
- dirty: false,
+ notifier,
+ display,
+ config,
+ received_count: Default::default(),
+ suppress_chars: Default::default(),
+ search_state: Default::default(),
+ event_queue: Default::default(),
+ modifiers: Default::default(),
+ mouse: Default::default(),
+ dirty: Default::default(),
}
}
@@ -1381,6 +1387,9 @@ impl<N: Notify + OnResize> Processor<N> {
#[cfg(target_os = "macos")]
processor.ctx.window_mut().set_has_shadow(config.ui_config.background_opacity() >= 1.0);
+ // Update hint keys.
+ processor.ctx.display.hint_state.update_alphabet(config.ui_config.hints.alphabet());
+
*processor.ctx.config = config;
// Update cursor blinking.