aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/input.rs')
-rw-r--r--alacritty/src/input.rs26
1 files changed, 22 insertions, 4 deletions
diff --git a/alacritty/src/input.rs b/alacritty/src/input.rs
index cab0f0e2..64b79002 100644
--- a/alacritty/src/input.rs
+++ b/alacritty/src/input.rs
@@ -99,6 +99,7 @@ pub trait ActionContext<T: EventListener> {
fn cancel_search(&mut self);
fn push_search(&mut self, c: char);
fn pop_search(&mut self);
+ fn pop_word_search(&mut self);
fn search_direction(&self) -> Direction;
fn search_active(&self) -> bool;
}
@@ -807,19 +808,34 @@ impl<'a, T: EventListener, A: ActionContext<T>> Processor<'a, T, A> {
pub fn key_input(&mut self, input: KeyboardInput) {
match input.state {
ElementState::Pressed if self.ctx.search_active() => {
- match input.virtual_keycode {
- Some(VirtualKeyCode::Back) => {
+ match (input.virtual_keycode, *self.ctx.modifiers()) {
+ (Some(VirtualKeyCode::Back), _) => {
self.ctx.pop_search();
*self.ctx.suppress_chars() = true;
},
- Some(VirtualKeyCode::Return) => {
+ (Some(VirtualKeyCode::Return), _)
+ | (Some(VirtualKeyCode::J), ModifiersState::CTRL) => {
self.ctx.confirm_search();
*self.ctx.suppress_chars() = true;
},
- Some(VirtualKeyCode::Escape) => {
+ (Some(VirtualKeyCode::Escape), _) => {
self.ctx.cancel_search();
*self.ctx.suppress_chars() = true;
},
+ (Some(VirtualKeyCode::U), ModifiersState::CTRL) => {
+ let direction = self.ctx.search_direction();
+ self.ctx.cancel_search();
+ self.ctx.start_search(direction);
+ *self.ctx.suppress_chars() = true;
+ },
+ (Some(VirtualKeyCode::H), ModifiersState::CTRL) => {
+ self.ctx.pop_search();
+ *self.ctx.suppress_chars() = true;
+ },
+ (Some(VirtualKeyCode::W), ModifiersState::CTRL) => {
+ self.ctx.pop_word_search();
+ *self.ctx.suppress_chars() = true;
+ },
_ => (),
}
@@ -1127,6 +1143,8 @@ mod tests {
fn pop_search(&mut self) {}
+ fn pop_word_search(&mut self) {}
+
fn search_direction(&self) -> Direction {
Direction::Right
}