def _draw(self) -> None:
start_idx_neg = self._wrapped_idx_neg - self._sizes.y + 1
- end_idx_neg = self._wrapped_idx_neg
- idx_pos_bookmark = ([idx_pos for idx_pos, t in enumerate(self._wrapped)
+ add_scroll_info = self._wrapped_idx_neg < -1
+ end_idx_neg = self._wrapped_idx_neg if add_scroll_info else None
+ bookmark_idx_pos = ([idx_pos for idx_pos, t in enumerate(self._wrapped)
if t[0] == self._bookmark_idx_pos] + [0])[0]
- wrapped = (self._wrapped[:idx_pos_bookmark]
- + [(0, '-' * self._sizes.x)]
- + self._wrapped[idx_pos_bookmark:])
+ 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]]
- add_scroll_info = self._wrapped_idx_neg < -1
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]
- else:
- to_write += [wrapped[self._wrapped_idx_neg][1]]
for i, line in enumerate(to_write):
self._write(line, i)
- hist_idx_pos = self._wrapped[end_idx_neg - int(add_scroll_info)][0]
+ 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)