diff --git a/src/app/search.rs b/src/app/search.rs index 552965d..ca317db 100644 --- a/src/app/search.rs +++ b/src/app/search.rs @@ -215,7 +215,7 @@ impl Ashell { }; if let Some(tab) = tab { - let snapshot = tab.render_snapshot(); + let snapshot = tab.render_snapshot(false); let display_offset = snapshot.display_offset as i32; let rows = snapshot.rows as i32; @@ -275,7 +275,7 @@ impl Ashell { let Some(tab) = tab else { return None; }; - let snapshot = tab.render_snapshot(); + let snapshot = tab.render_snapshot(false); let display_offset = snapshot.display_offset as i32; let rows = snapshot.rows as i32; diff --git a/src/app/ui.rs b/src/app/ui.rs index fb8dcec..c71e31e 100644 --- a/src/app/ui.rs +++ b/src/app/ui.rs @@ -26,7 +26,7 @@ use crate::{ sftp::format_mtime, sftp::ops::is_editable_text_file, system::format_bytes, - terminal::{self, TabKind, TerminalTab}, + terminal::{self, TabKind}, }; impl Ashell { @@ -2350,11 +2350,12 @@ impl Ashell { return this.render_home_page(cx).into_any_element(); } let is_focused = path == this.focused_pane_path.as_slice(); + let keyword_highlight = this.config.keyword_highlight(); let snapshot = this .tabs .iter() .find(|t| &t.id == tab_id) - .map(TerminalTab::render_snapshot); + .map(|t| t.render_snapshot(keyword_highlight)); let Some(snapshot) = snapshot else { return div().into_any_element(); }; @@ -2638,7 +2639,7 @@ impl Render for Ashell { if let Some(scrollbar) = self.terminal_scrollbars.get(&active_id) { if let Some(new_display_offset) = scrollbar.future_display_offset.take() { if let Some(tab) = self.tabs.iter_mut().find(|tab| tab.id == active_id) { - let current = tab.render_snapshot().display_offset; + let current = tab.render_snapshot(false).display_offset; match new_display_offset.cmp(¤t) { std::cmp::Ordering::Greater => { tab.scroll_up_by(new_display_offset - current) diff --git a/src/session/mod.rs b/src/session/mod.rs index 1b659f6..b196699 100644 --- a/src/session/mod.rs +++ b/src/session/mod.rs @@ -1010,7 +1010,7 @@ impl Ashell { self.active_tab .as_ref() .and_then(|id| self.tabs.iter().find(|t| &t.id == id)) - .map(TerminalTab::render_snapshot) + .map(|t| t.render_snapshot(self.config.keyword_highlight())) } pub(crate) fn active_kind(&self) -> Option { diff --git a/src/terminal/input.rs b/src/terminal/input.rs index eac0a5f..cd482fb 100644 --- a/src/terminal/input.rs +++ b/src/terminal/input.rs @@ -165,7 +165,7 @@ impl Ashell { return; }; - if tab.render_snapshot().display_offset > 0 { + if tab.render_snapshot(false).display_offset > 0 { tab.scroll_to_bottom(); } tab.clear_selection(); @@ -204,7 +204,7 @@ impl Ashell { return; }; - if tab.render_snapshot().display_offset > 0 { + if tab.render_snapshot(false).display_offset > 0 { tab.scroll_to_bottom(); } @@ -236,7 +236,7 @@ impl Ashell { return; }; - if tab.render_snapshot().display_offset > 0 { + if tab.render_snapshot(false).display_offset > 0 { tab.scroll_to_bottom(); } tab.clear_selection(); @@ -291,7 +291,7 @@ impl Ashell { return; }; - if tab.render_snapshot().display_offset > 0 { + if tab.render_snapshot(false).display_offset > 0 { tab.scroll_to_bottom(); } tab.clear_selection(); diff --git a/src/terminal/mod.rs b/src/terminal/mod.rs index c87da9e..79db433 100644 --- a/src/terminal/mod.rs +++ b/src/terminal/mod.rs @@ -319,7 +319,7 @@ impl TerminalTab { self.term.mode().contains(TermMode::APP_CURSOR) } - pub fn render_snapshot(&self) -> RenderSnapshot { + pub fn render_snapshot(&self, keyword_highlight: bool) -> RenderSnapshot { let rows = self.rows; let cols = self.cols; let content = self.term.renderable_content(); @@ -349,9 +349,7 @@ impl TerminalTab { } // Get highlights from cache or recompute, only if keyword_highlight is enabled. - let is_enabled = crate::session::config::ConfigStore::load() - .map(|c| c.keyword_highlight()) - .unwrap_or(false); + let is_enabled = keyword_highlight; let highlights = if is_enabled { let mut cache = self.highlight_cache.borrow_mut();