diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 3 | ||||
-rw-r--r-- | src/event.rs | 5 | ||||
-rw-r--r-- | src/input.rs | 8 | ||||
-rw-r--r-- | src/term/mod.rs | 14 |
4 files changed, 24 insertions, 6 deletions
diff --git a/src/config.rs b/src/config.rs index 2028132f..d56e8578 100644 --- a/src/config.rs +++ b/src/config.rs @@ -746,7 +746,7 @@ impl<'a> de::Deserialize<'a> for ActionWrapper { fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("Paste, Copy, PasteSelection, IncreaseFontSize, DecreaseFontSize, \ ResetFontSize, ScrollPageUp, ScrollPageDown, ScrollToTop, \ - ScrollToBottom, ClearHistory, Hide, or Quit") + ScrollToBottom, ClearHistory, Hide, ClearLogNotice or Quit") } fn visit_str<E>(self, value: &str) -> ::std::result::Result<ActionWrapper, E> @@ -766,6 +766,7 @@ impl<'a> de::Deserialize<'a> for ActionWrapper { "ClearHistory" => Action::ClearHistory, "Hide" => Action::Hide, "Quit" => Action::Quit, + "ClearLogNotice" => Action::ClearLogNotice, _ => return Err(E::invalid_value(Unexpected::Str(value), &self)), })) } diff --git a/src/event.rs b/src/event.rs index ece8ec6f..f69136df 100644 --- a/src/event.rs +++ b/src/event.rs @@ -171,6 +171,11 @@ impl<'a, N: Notify + 'a> input::ActionContext for ActionContext<'a, N> { fn hide_window(&mut self) { self.window_changes.hide = true; } + + #[inline] + fn clear_log(&mut self) { + self.terminal.clear_log(); + } } /// The ActionContext can't really have direct access to the Window diff --git a/src/input.rs b/src/input.rs index d2f8f6b5..051a38db 100644 --- a/src/input.rs +++ b/src/input.rs @@ -76,6 +76,7 @@ pub trait ActionContext { fn clear_history(&mut self); fn hide_window(&mut self); fn url(&self, _: Point<usize>) -> Option<String>; + fn clear_log(&mut self); } /// Describes a state and action to take in that state @@ -200,6 +201,9 @@ pub enum Action { /// Quits Alacritty. Quit, + + /// Clears warning and error notices. + ClearLogNotice, } impl Action { @@ -292,6 +296,9 @@ impl Action { Action::ClearHistory => { ctx.clear_history(); }, + Action::ClearLogNotice => { + ctx.clear_log(); + } } } @@ -885,6 +892,7 @@ mod tests { } fn hide_window(&mut self) { } + fn clear_log(&mut self) {} } macro_rules! test_clickstate { diff --git a/src/term/mod.rs b/src/term/mod.rs index 0f228f86..5107dc2d 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -877,6 +877,14 @@ impl Term { &self.grid.selection } + /// Clear displayed errors and warnings. + pub fn clear_log(&mut self) { + if let Some(ref mut logger_proxy) = self.logger_proxy { + logger_proxy.clear(); + } + } + + pub fn selection_mut(&mut self) -> &mut Option<Selection> { &mut self.grid.selection } @@ -1831,11 +1839,7 @@ impl ansi::Handler for Term { } }, ansi::ClearMode::All => { - // Clear displayed errors and warnings - if let Some(ref mut logger_proxy) = self.logger_proxy { - logger_proxy.clear(); - } - + self.clear_log(); self.grid.region_mut(..).each(|c| c.reset(&template)); }, ansi::ClearMode::Above => { |