From 41d52c610b039f797904d56dd66602fbbd2d7db8 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sat, 4 Oct 2025 14:24:53 +0200 Subject: [PATCH] Add basic line-level highlighting. --- src/ircplom/tui_base.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/ircplom/tui_base.py b/src/ircplom/tui_base.py index 5d869fb..ce26c95 100644 --- a/src/ircplom/tui_base.py +++ b/src/ircplom/tui_base.py @@ -158,13 +158,24 @@ class _HistoryWidget(_ScrollableWidget): wrapped = (self._wrapped[:bookmark_idx_pos] + [(0, '-' * self._sizes.x)] # bookmark line + self._wrapped[bookmark_idx_pos:]) - to_write = [t[1] for t in wrapped[start_idx_neg:end_idx_neg]] + + to_write_w_attrs: list[tuple[Optional[str], str]] = [] + do_highlight = False + prev_idx_unwrapped: Optional[int] = -1 + for idx_unwrapped, line in wrapped[start_idx_neg:end_idx_neg]: + if idx_unwrapped != prev_idx_unwrapped: + do_highlight = line[:1] == '*' + prev_idx_unwrapped = idx_unwrapped + to_write_w_attrs += [('bold' if do_highlight else None, line)] + if add_scroll_info: scroll_info = f'vvv [{(-1) * self._wrapped_idx_neg}] ' scroll_info += 'v' * (self._sizes.x - len(scroll_info)) - to_write += [scroll_info] - for i, line in enumerate(to_write): - self._write(line, i) + to_write_w_attrs += [('reverse', scroll_info)] + + for idx, line_t in enumerate(to_write_w_attrs): + self._write(start_y=idx, attribute=line_t[0], msg=line_t[1]) + hist_idx_pos = self._wrapped[(end_idx_neg or 0) - 1][0] self._last_read_idx_pos = max(self._last_read_idx_pos, hist_idx_pos or 0) -- 2.30.2