aboutsummaryrefslogtreecommitdiff
path: root/src/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/input.rs')
-rw-r--r--src/input.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/input.rs b/src/input.rs
index cccb3bb4..3c20fe36 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -69,6 +69,7 @@ pub trait ActionContext {
fn change_font_size(&mut self, delta: f32);
fn reset_font_size(&mut self);
fn scroll(&mut self, scroll: Scroll);
+ fn clear_history(&mut self);
fn hide_window(&mut self);
}
@@ -183,6 +184,9 @@ pub enum Action {
/// Scroll all the way to the bottom
ScrollToBottom,
+ /// Clear the display buffer(s) to remove history
+ ClearHistory,
+
/// Run given command
Command(String, Vec<String>),
@@ -272,6 +276,9 @@ impl Action {
Action::ScrollToBottom => {
ctx.scroll(Scroll::Bottom);
},
+ Action::ClearHistory => {
+ ctx.clear_history();
+ },
}
}
@@ -634,15 +641,16 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
///
/// Returns true if an action is executed.
fn process_key_bindings(&mut self, mods: ModifiersState, key: VirtualKeyCode) -> bool {
+ let mut has_binding = false;
for binding in self.key_bindings {
if binding.is_triggered_by(self.ctx.terminal_mode(), mods, &key) {
// binding was triggered; run the action
binding.execute(&mut self.ctx);
- return true;
+ has_binding = true;
}
}
- false
+ has_binding
}
/// Attempts to find a binding and execute its action
@@ -652,15 +660,16 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
///
/// Returns true if an action is executed.
fn process_mouse_bindings(&mut self, mods: ModifiersState, button: MouseButton) -> bool {
+ let mut has_binding = false;
for binding in self.mouse_bindings {
if binding.is_triggered_by(self.ctx.terminal_mode(), mods, &button) {
// binding was triggered; run the action
binding.execute(&mut self.ctx);
- return true;
+ has_binding = true;
}
}
- false
+ has_binding
}
}
@@ -756,6 +765,8 @@ mod tests {
}
fn reset_font_size(&mut self) {
}
+ fn clear_history(&mut self) {
+ }
fn hide_window(&mut self) {
}
}