From 4beabca14d1d06310aa79b86c6010ef3478b6a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20H=C3=B6ner?= Date: Sun, 15 Sep 2024 23:53:13 +0200 Subject: [PATCH] Add "Clear scrollback" action --- i18n/de/cosmic_term.ftl | 1 + i18n/en-GB/cosmic_term.ftl | 1 + i18n/en/cosmic_term.ftl | 1 + src/key_bind.rs | 3 +++ src/main.rs | 13 +++++++++++++ src/menu.rs | 4 ++++ 6 files changed, 23 insertions(+) diff --git a/i18n/de/cosmic_term.ftl b/i18n/de/cosmic_term.ftl index fe0298f..34b49c2 100644 --- a/i18n/de/cosmic_term.ftl +++ b/i18n/de/cosmic_term.ftl @@ -83,6 +83,7 @@ copy = Kopieren paste = Einfügen select-all = Alles auswählen find = Suchen +clear-scrollback = Scrollverlauf löschen ## Ansicht view = Ansicht diff --git a/i18n/en-GB/cosmic_term.ftl b/i18n/en-GB/cosmic_term.ftl index ae05e55..133322f 100644 --- a/i18n/en-GB/cosmic_term.ftl +++ b/i18n/en-GB/cosmic_term.ftl @@ -83,6 +83,7 @@ copy = Copy paste = Paste select-all = Select all find = Find +clear-scrollback = Clear scrollback ## View view = View diff --git a/i18n/en/cosmic_term.ftl b/i18n/en/cosmic_term.ftl index b7146b6..72cb16f 100644 --- a/i18n/en/cosmic_term.ftl +++ b/i18n/en/cosmic_term.ftl @@ -83,6 +83,7 @@ copy = Copy paste = Paste select-all = Select all find = Find +clear-scrollback = Clear scrollback ## View view = View diff --git a/src/key_bind.rs b/src/key_bind.rs index 30f02e0..c302346 100644 --- a/src/key_bind.rs +++ b/src/key_bind.rs @@ -75,5 +75,8 @@ pub fn key_binds() -> HashMap { bind!([Ctrl, Shift], Key::Named(Named::ArrowRight), PaneFocusRight); bind!([Ctrl, Shift], Key::Character("L".into()), PaneFocusRight); + // CTRL+Alt+L clears the scrollback. + bind!([Ctrl, Alt], Key::Character("L".into()), ClearScrollback); + key_binds } diff --git a/src/main.rs b/src/main.rs index 0b8f5cd..16ab7f2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -180,6 +180,7 @@ pub struct Flags { #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum Action { About, + ClearScrollback, ColorSchemes(ColorSchemeKind), Copy, CopyOrSigint, @@ -224,6 +225,7 @@ impl Action { fn message(&self, entity_opt: Option) -> Message { match self { Self::About => Message::ToggleContextPage(ContextPage::About), + Self::ClearScrollback => Message::ClearScrollback(entity_opt), Self::ColorSchemes(color_scheme_kind) => { Message::ToggleContextPage(ContextPage::ColorSchemes(*color_scheme_kind)) } @@ -280,6 +282,7 @@ impl MenuAction for Action { #[derive(Clone, Debug)] pub enum Message { AppTheme(AppTheme), + ClearScrollback(Option), ColorSchemeCollapse, ColorSchemeDelete(ColorSchemeKind, ColorSchemeId), ColorSchemeExpand(ColorSchemeKind, Option), @@ -1576,6 +1579,16 @@ impl Application for App { config_set!(app_theme, app_theme); return self.update_config(); } + Message::ClearScrollback(entity_opt) => { + if let Some(tab_model) = self.pane_model.active() { + let entity = entity_opt.unwrap_or_else(|| tab_model.active()); + if let Some(terminal) = tab_model.data::>(entity) { + let terminal = terminal.lock().unwrap(); + let mut term = terminal.term.lock(); + term.grid_mut().clear_history(); + } + } + } Message::ColorSchemeCollapse => { self.color_scheme_expanded = None; } diff --git a/src/menu.rs b/src/menu.rs index e0d8b37..2d04ed8 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -62,6 +62,8 @@ pub fn context_menu<'a>( menu_item(fl!("paste"), Action::Paste), menu_item(fl!("select-all"), Action::SelectAll), horizontal_rule(1), + menu_item(fl!("clear-scrollback"), Action::ClearScrollback), + horizontal_rule(1), menu_item(fl!("split-horizontal"), Action::PaneSplitHorizontal), menu_item(fl!("split-vertical"), Action::PaneSplitVertical), menu_item(fl!("pane-toggle-maximize"), Action::PaneToggleMaximized), @@ -178,6 +180,8 @@ pub fn menu_bar<'a>(config: &Config, key_binds: &HashMap) -> El MenuItem::Button(fl!("paste"), Action::Paste), MenuItem::Button(fl!("select-all"), Action::SelectAll), MenuItem::Divider, + MenuItem::Button(fl!("clear-scrollback"), Action::ClearScrollback), + MenuItem::Divider, MenuItem::Button(fl!("find"), Action::Find), ], ),