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)