From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 2 Dec 2025 00:44:07 +0000 (+0100)
Subject: Extend TUI line testing grammar to easen handling of new bold highlight in status...
X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/static/%7Broute%7D?a=commitdiff_plain;h=refs%2Fheads%2Fmaster;p=ircplom
Extend TUI line testing grammar to easen handling of new bold highlight in status lines.
---
diff --git a/src/ircplom/testing.py b/src/ircplom/testing.py
index a701699..2ec7080 100644
--- a/src/ircplom/testing.py
+++ b/src/ircplom/testing.py
@@ -38,7 +38,7 @@ _SIGNATURE_FOR_CMD = {
_MARK_INSERT: (4, 2),
_MARK_LOG: (2, 0),
_MARK_PROMPT: (1, None),
- _MARK_SCREENLINE: (3, 0),
+ _MARK_SCREENLINE: (4, 0),
_MARK_SERVERMSG: (2, 0),
_MARK_WAIT: (1, 0),
}
@@ -95,15 +95,19 @@ class TestTerminal(QueueMixin, TerminalInterface):
yield TuiEvent.affector('handle_keyboard_event'
).kw(typed_in=to_yield)
- def assert_screen_line(self, y: int, attrs_str: str, text: str) -> None:
+ def assert_screen_line(self, y: int, x: int, attrs_str: str, text: str
+ ) -> None:
'Assert test screen at line y shows text, attrs of attrs_str set.'
assert 0 <= y < self.size.y
+ assert 0 <= x < self.size.x
+ text = _SCREENLINE_IGNORE_CHAR * x + text
if text.endswith(_SCREENLINE_PADDING_SUFFIX):
text = text[:-len(_SCREENLINE_PADDING_SUFFIX)]
text += ' ' * (self.size.x - self.len_to_term(text))
jumped_nones = 0
for idx, cell_expected in enumerate(
(tuple(attrs_str.split(_SEP_1)), c) for c in text):
+
cell_found = self._screen[y][idx+jumped_nones]
if cell_found is None:
jumped_nones += 1
@@ -440,7 +444,7 @@ class _Playbook:
assert self.assert_screen_line is not None
assert self.redraw_affected is not None
self.redraw_affected()
- self.assert_screen_line(int(args[0]), *args[1:])
+ self.assert_screen_line(int(args[0]), int(args[1]), *args[2:])
elif cmd_name == _MARK_WAIT:
sleep(int(args[0]))
self._idx += 1
diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test
index 3daece1..a3e80d4 100644
--- a/src/tests/tui_draw.test
+++ b/src/tests/tui_draw.test
@@ -5,7 +5,7 @@ insert ./lib/enter_misc
insert ./lib/pingpong
à lines-empty-1
-line 0 on_black,bright_white §§
+line 0 0 on_black,bright_white §§
à lines-empty
insert lines-empty-1 : +0
@@ -32,17 +32,18 @@ insert lines-empty-1 : +20
insert lines-empty-1 : +21
à lines-prompt-empty
-line 23 on_black,bright_white > § §§
-line 23 on_black,bright_white,reverse §§ §
+line 23 0 on_black,bright_white > § §§
+line 23 0 on_black,bright_white,reverse §§ §
à line-bookmark
-line 0 on_black,bright_white --------------------------------------------------------------------------------§§
+line 0 0 on_black,bright_white --------------------------------------------------------------------------------§§
à line-scrolldown
-line 21 on_black,bright_white,reverse vvv XXXXXXvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
+line 21 0 on_black,bright_white,reverse vvv XXXXXXvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv§§
à lines-status-prompt
-line 22 on_black,bright_white x123456789x1234567=========================================X123456789X123456789X§§
+line 22 0 on_black,bright_white x123456789x1234567=========================================X123456789X123456789X§§
+line 22 FOCUS_X on_black,bright_white,bold [FOCUS_STR]
insert lines-prompt-empty
à lines-status-prompt-start
@@ -52,41 +53,41 @@ insert lines-status-prompt : +22 x123456789x1234567 ::start)===========
insert lines-status-prompt : +22 x123456789x1234567 :foo.bar.baz:debug)
à line-invalid-prompt-command
-line 0 on_black,bright_red,bold # §§:§§:§§ invalid prompt command: MSG§§
+line 0 0 on_black,bright_red,bold # §§:§§:§§ invalid prompt command: MSG§§
à line-invalid-prompt-command-unknown
insert line-invalid-prompt-command : +0 MSG :/CMD unknown
à line-ping
-line 0 on_black,bright_white < §§:§§:§§ PING :?
+line 0 0 on_black,bright_white < §§:§§:§§ PING :?
à line-pong
-line 0 on_black,bright_green > §§:§§:§§ PONG :?
+line 0 0 on_black,bright_green > §§:§§:§§ PONG :?
à lines-ping-pong
insert line-ping : +0 ? :??
insert line-pong : +1 ? :??
à line-tui-log
-line 0 on_black,bright_cyan # §§:§§:§§ ?§§
+line 0 0 on_black,bright_cyan # §§:§§:§§ ?§§
à line-bright-red-bold
-line 0 on_black,bright_red,bold ?§§
+line 0 0 on_black,bright_red,bold ?§§
à line-bright-white
-line 0 on_black,bright_white ?§§
+line 0 0 on_black,bright_white ?§§
à line-bright-green
-line 0 on_black,bright_green ?§§
+line 0 0 on_black,bright_green ?§§
à line-server-log
-line 0 on_black,bright_yellow $ §§:§§:§§ ?§§§
+line 0 0 on_black,bright_yellow $ §§:§§:§§ ?§§§
à line-client-msg
-line 0 on_black,bright_green > §§:§§:§§ ?§§
+line 0 0 on_black,bright_green > §§:§§:§§ ?§§
à line-cal
-line 0 on_black,bright_white 20§§-§§-§§ §§
+line 0 0 on_black,bright_white 20§§-§§-§§ §§
à history_0
insert line-cal : +0
@@ -176,93 +177,93 @@ insert lines-ping-pong : +78 ?? :30
à ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ
insert lines-empty
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# nothing happening on empty command input
>
insert lines-empty
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scrolling on empty history does nothing
> /window.history.scroll up
insert lines-empty
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
> /window.history.scroll down
insert lines-empty
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# non-empty command input starts log at bottom, with date above it
insert enter-unprefixed : +0 ? :foo
insert lines-empty :20
insert history_0 :2 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scrolling on history merely 2 lines long won't do anything either
> /window.history.scroll up
insert lines-empty :20
insert history_0 :2 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
> /window.history.scroll down
insert lines-empty :20
insert history_0 :2 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# further inputs grow log upwards
> /foo
log 0 # invalid prompt command: /foo unknown
insert lines-empty :19
insert history_0 :3 +19
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scrolling up does something on history 3 lines long
> /window.history.scroll up
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[2] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scrolling down on 3-lines history
> /window.history.scroll down
insert lines-empty :19
insert history_0 :3 +19
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check history growing below up-scroll
> /window.history.scroll up
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[2] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
insert enter-help-win0
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[14] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :============([(0:12)]
+insert lines-status-prompt-start : +22 FOCUS_X=72 FOCUS_STR=(0:12) X123456789X123456789X :============(§§§§§§§§
# check scroll-down on newer history longer than half a screen width does not fully land at bottom
> /window.history.scroll down
insert lines-empty :9
insert history_0 :12 +9
insert line-scrolldown : +21 XXXXXX :[3] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:3)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:3) X123456789X123456789X :=============(§§§§§§§
# check previous scroll-down not hitting bottom be fully reversible
> /window.history.scroll up
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[14] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:3)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:3) X123456789X123456789X :=============(§§§§§§§
> /window.history.scroll down
insert lines-empty :9
insert history_0 :12 +9
insert line-scrolldown : +21 XXXXXX :[3] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:3)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:3) X123456789X123456789X :=============(§§§§§§§
# scroll to bottom, check history still growing up even beyond upper fold
> /window.history.scroll down
insert lines-empty :7
insert history_0 :15 +7
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
insert enter-unknown : +0 ? :0
insert enter-unknown : +0 ? :1
insert enter-unknown : +0 ? :2
@@ -272,19 +273,19 @@ insert enter-unknown : +0 ? :5
insert enter-unknown : +0 ? :6
insert enter-unknown : +0 ? :7
insert history_0 1:23 +0
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scroll-down even with long history does nothing
> /window.history.scroll down
insert history_0 1:23 +0
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# quick look one scroll up to check single-scroll increase of below-scroll count (when up-scroll not limited, and all lines un-wrapped)
> /window.history.scroll up
insert lines-empty :9
insert history_0 :12 +9
insert line-scrolldown : +21 XXXXXX :[11] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check wrapping
> /window.history.scroll down
@@ -293,24 +294,24 @@ log 0 # invalid prompt command: /foo_0123456789_0123456789_0123456789 unknown
> /foo_0123456789_0123456789_0123456789_
log 0 # invalid prompt command: /foo_0123456789_0123456789_0123456789_ unknown
insert history_0 4:26 +0
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scroll-up over wrapped moves up less history lines than screen lines
> /window.history.scroll up
insert lines-empty :6
insert history_0 :15 +6
insert line-scrolldown : +21 XXXXXX :[10] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check scroll-down fully reversible even if over wrapped
> /window.history.scroll down
insert history_0 4:26 +0
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
> /window.history.scroll up
insert lines-empty :6
insert history_0 :15 +6
insert line-scrolldown : +21 XXXXXX :[10] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=================([0]
+insert lines-status-prompt-start : +22 FOCUS_X=77 FOCUS_STR=0 X123456789X123456789X :=================(§§§
# check wrapped input only increases below-scroll count by one
> /bar_0123456789_0123456789_0123456789_
@@ -318,98 +319,98 @@ log 0 # invalid prompt command: /bar_0123456789_0123456789_0123456789_ unknown
insert lines-empty :6
insert history_0 :15 +6
insert line-scrolldown : +21 XXXXXX :[11] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:1)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:1) X123456789X123456789X :=============(§§§§§§§
# check scroll-down over wrapped will snap down to bottom of wrapped
> /window.history.scroll down
insert history_0 5:26 +0
insert line-scrolldown : +21 XXXXXX :[1] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:1)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:1) X123456789X123456789X :=============(§§§§§§§
# # check scrolls-up over longer history until top
> /window.history.scroll up
insert lines-empty :6
insert history_0 :15 +6
insert line-scrolldown : +21 XXXXXX :[11] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:1)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:1) X123456789X123456789X :=============(§§§§§§§
> /window.history.scroll up
insert lines-empty :17
insert history_0 :3 +17
insert line-scrolldown : +21 XXXXXX :[22] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:1)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:1) X123456789X123456789X :=============(§§§§§§§
> /window.history.scroll up
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[25] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=============([(0:1)]
+insert lines-status-prompt-start : +22 FOCUS_X=73 FOCUS_STR=(0:1) X123456789X123456789X :=============(§§§§§§§
# check that triggering creation of new window with new lines adds it to status, with unread-lines count
insert connect-to-connected
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[25] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :([(0:1)] (1:14) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=60 FOCUS_STR=(0:1) X123456789X123456789X :(§§§§§§§ (1:14) (2:7)
# check switch to other window, updates to status line (movement of brackets, clearing of own unread-lines count)
> /window 1
insert lines-empty :8
insert history_1 :14 +8
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====((0:1) [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=====((0:1) §§§ (2:7)
# check switch-back to window 0, retaining clearing of window 1's unread-lines count
> /window 0
insert lines-empty :20
insert history_0 :1 +20
insert line-scrolldown : +21 XXXXXX :[25] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([(0:1)] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=(0:1) X123456789X123456789X :=====(§§§§§§§ 1 (2:7)
# check that on full scroll-down, we now have a bookmark above the newest lines not previously scrolled into
> /window.history.scroll down
insert lines-empty :9
insert history_0 :12 +9
insert line-scrolldown : +21 XXXXXX :[14] v
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([(0:1)] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=(0:1) X123456789X123456789X :=====(§§§§§§§ 1 (2:7)
> /window.history.scroll down
insert history_0 2:23 +0
insert line-scrolldown : +21 XXXXXX :[3] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([(0:1)] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=(0:1) X123456789X123456789X :=====(§§§§§§§ 1 (2:7)
> /window.history.scroll down
insert history_0 7:26 +0
insert line-bookmark : +19
insert history_0 26:28 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
# check SIGWINCH does not re-set bookmark
> raise_sigwinch
insert history_0 7:26 +0
insert line-bookmark : +19
insert history_0 26:28 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
# check that scrolling non-bottom bookmark out of sight, then scrolling it back into view again does not by itself move its position in the log history
> /window.history.scroll up
insert lines-empty :3
insert history_0 :18 +3
insert line-scrolldown : +21 XXXXXX :[8] vv
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
> /window.history.scroll down
insert history_0 7:26 +0
insert line-bookmark : +19
insert history_0 26:28 +20
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
# check that second switch to new window, previously left on bottom of history, establishes bookmark at bottom of log
> /window 1
insert lines-empty :7
insert history_1 :14 +7
insert line-bookmark : +21
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check second switch-back places bookmark at bottom there too, since the newest lines previously succeeding it have now been read by us
> /window 0
insert history_0 7:28 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
# check new lines push bookmark up
insert enter-list-start
@@ -418,7 +419,7 @@ log 0 # 2) foo.bar.baz:server
insert history_0 11:28 +0
insert line-bookmark : +17
insert history_0 28:32 +18
-insert lines-status-prompt-start : +22 X123456789X123456789X :=========([0] 1 (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=69 FOCUS_STR=0 X123456789X123456789X :=========(§§§ 1 (2:7)
# check new lines growing in other window, one of which long enough to wrap, to re-start count in status (with wrapped only as single)
insert ping-pong : +0 ? :0
@@ -428,14 +429,14 @@ insert ping-pong : +0 ? :9 123456789 123456789 123456789 123456789 123456789 123
insert history_0 11:28 +0
insert line-bookmark : +17
insert history_0 28:32 +18
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([0] (1:8) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=0 X123456789X123456789X :=====(§§§ (1:8) (2:7)
# check that switching to window with new lines, but left scroll-to-bottom, keeps the scroll-to-bottom, keeps bookmark after last line previously seen there
> /window 1
insert history_1 3:14 +0
insert line-bookmark : +11
insert history_1 14:24 +12
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check that growth below scroll does not by itself re-position bookmark in history
> /window.history.scroll up
@@ -443,97 +444,97 @@ insert ping-pong : +0 ? :3
insert lines-empty :7
insert history_1 0:14 +7
insert line-scrolldown : +21 XXXXXX :[10] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 4:14 +0
insert line-bookmark : +10
insert history_1 14:24 +11
insert line-scrolldown : +21 XXXXXX :[2] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
# check that with new lines left unread, switch away and back into window moves bookmark below newest read line, counts unread lines in status
> /window 0
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([0] (1:2) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=0 X123456789X123456789X :=====(§§§ (1:2) (2:7)
> /window 1
insert history_1 4:24 +0
insert line-bookmark : +20
insert line-scrolldown : +21 XXXXXX :[2] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
# check that growing lines below scroll in other preserves non-bottom bookmark (left in sight on previous window leave)
> /window 0
insert ping-pong : +0 ? :4
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([0] (1:4) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=0 X123456789X123456789X :=====(§§§ (1:4) (2:7)
> /window 1
insert history_1 4:24 +0
insert line-bookmark : +20
insert line-scrolldown : +21 XXXXXX :[4] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:4)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:4) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
# check same applies when leaving affected window with bookmark out-of-sight
> /window.history.scroll up
insert lines-empty :7
insert history_1 :14 +7
insert line-scrolldown : +21 XXXXXX :[12] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:4)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:4) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window 0
insert ping-pong : +0 ? :5
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([0] (1:6) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=0 X123456789X123456789X :=====(§§§ (1:6) (2:7)
> /window 1
insert lines-empty :7
insert history_1 :14 +7
insert line-scrolldown : +21 XXXXXX :[14] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:6)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:6) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 4:24 +0
insert line-bookmark : +20
insert line-scrolldown : +21 XXXXXX :[6] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:6)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:6) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 9:24 +0
insert line-bookmark : +15
insert history_1 24:30 +16
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check log growth beyond max depth only remarkable after scrolling up to limit
insert ping-pong : +0 ? :6
insert history_1 11:24 +0
insert line-bookmark : +13
insert history_1 24:32 +14
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
> /window.history.scroll up
insert history_1 1:22 +0
insert line-scrolldown : +21 XXXXXX :[9] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
> /window.history.scroll up
insert lines-empty :10
insert history_1 :11 +10
insert line-scrolldown : +21 XXXXXX :[19] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
> /window.history.scroll up
insert lines-empty :20
insert history_1 :1 +20
insert line-scrolldown : +21 XXXXXX :[29] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check cut-off log growth seen from topmost scroll not affecting scrolldown count, but unread-lines status
insert ping-pong : +0 ? :7
insert lines-empty :20
insert history_1 2:3 +20
insert line-scrolldown : +21 XXXXXX :[29] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
# check unread-lines count potentially growing above max log depth if in other window
> /window 0
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :=====([0] (1:2) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=65 FOCUS_STR=0 X123456789X123456789X :=====(§§§ (1:2) (2:7)
insert ping-pong : +0 ? :8
insert ping-pong : +0 ? :9
insert ping-pong : +0 ? :10
@@ -551,57 +552,57 @@ insert ping-pong : +0 ? :21
insert ping-pong : +0 ? :22
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :====([0] (1:32) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=64 FOCUS_STR=0 X123456789X123456789X :====(§§§ (1:32) (2:7)
# check switching into window scrolled-top with more unread lines than max log depth shrinks former to latter, and scrolling down no bookmark is to be found
> /window 1
insert lines-empty :20
insert history_1 34:35 +20
insert line-scrolldown : +21 XXXXXX :[29] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :====(0 [(1:29)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=66 FOCUS_STR=(1:29) X123456789X123456789X :====(0 §§§§§§§§ (2:7)
> /window.history.scroll down
insert lines-empty :9
insert history_1 34:46 +9
insert line-scrolldown : +21 XXXXXX :[18] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :====(0 [(1:18)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=66 FOCUS_STR=(1:18) X123456789X123456789X :====(0 §§§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 36:57 +0
insert line-scrolldown : +21 XXXXXX :[7] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:7)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:7) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 42:62 +0
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check bookmark remains absent with log growing while scrolled to bottom, â¦
insert ping-pong : +0 ? :23
insert history_1 44:64 +0
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# ⦠as well as if further growth happens below scroll
> /window.history.scroll up
insert lines-empty :2
insert history_1 36:55 +2
insert line-scrolldown : +21 XXXXXX :[11] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
insert ping-pong : +0 ? :24
insert lines-empty :4
insert history_1 38:55 +4
insert line-scrolldown : +21 XXXXXX :[13] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 45:66 +0
insert line-scrolldown : +21 XXXXXX :[2] vv
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=====(0 [(1:2)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=67 FOCUS_STR=(1:2) X123456789X123456789X :=====(0 §§§§§§§ (2:7)
> /window.history.scroll down
insert history_1 46:68 +0
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
# check unread-lines status not growing beyond max log if within active window, and â¦
> /window.history.scroll up
insert lines-empty :2
insert history_1 38:55 +2
insert line-scrolldown : +21 XXXXXX :[11] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :=========(0 [1] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=71 FOCUS_STR=1 X123456789X123456789X :=========(0 §§§ (2:7)
insert ping-pong : +0 ? :25
insert ping-pong : +0 ? :26
insert ping-pong : +0 ? :27
@@ -620,23 +621,23 @@ insert ping-pong : +0 ? :39
insert lines-empty :20
insert history_1 68:69 +20
insert line-scrolldown : +21 XXXXXX :[29] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :====(0 [(1:29)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=66 FOCUS_STR=(1:29) X123456789X123456789X :====(0 §§§§§§§§ (2:7)
# ⦠setting bookmark visible after switching back-and-forth
> /window 0
insert history_0 11:32 +0
insert line-bookmark : +21
-insert lines-status-prompt-start : +22 X123456789X123456789X :====([0] (1:29) (2:7)
+insert lines-status-prompt-start : +22 FOCUS_X=64 FOCUS_STR=0 X123456789X123456789X :====(§§§ (1:29) (2:7)
> /window 1
insert lines-empty :19
insert history_1 68:69 +19
insert line-bookmark : +20
insert line-scrolldown : +21 XXXXXX :[29] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :====(0 [(1:29)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=66 FOCUS_STR=(1:29) X123456789X123456789X :====(0 §§§§§§§§ (2:7)
> /window.history.scroll down
insert lines-empty :8
insert history_1 68:69 +8
insert line-bookmark : +9
insert history_1 69:80 +10
insert line-scrolldown : +21 XXXXXX :[18] v
-insert lines-status-prompt-foobarbaz : +22 X123456789X123456789X :====(0 [(1:18)] (2:7)
+insert lines-status-prompt-foobarbaz : +22 FOCUS_X=66 FOCUS_STR=(1:18) X123456789X123456789X :====(0 §§§§§§§§ (2:7)
diff --git a/src/tests/tui_line_formattings.test b/src/tests/tui_line_formattings.test
index 43240d1..80dd83c 100644
--- a/src/tests/tui_line_formattings.test
+++ b/src/tests/tui_line_formattings.test
@@ -5,7 +5,7 @@ insert ./lib/servernotice
à servermsglogged-and-line-unwrapped
insert servermsglogged : +0 MSG :XXX
-line 21 on_black,bright_white < §§:§§:§§ XXX§§
+line 21 0 on_black,bright_white < §§:§§:§§ XXX§§
à ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ
@@ -18,44 +18,44 @@ insert servermsglogged-and-line-unwrapped : +0 XXX ::foo.bar.baz 001 foo :6789 1
# check wrap if last space-separated item one char too long
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678 01
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
-line 21 on_black,bright_white 01§§
+line 20 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
+line 21 0 on_black,bright_white 01§§
# check wrap if item starts right after width-final space
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 123456789 1
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 123456789§§
-line 21 on_black,bright_white 1§§
+line 20 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 123456789§§
+line 21 0 on_black,bright_white 1§§
# check wrap if item starts right after space after item extending to end of width
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890 2
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
-line 21 on_black,bright_white 2§§
+line 20 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
+line 21 0 on_black,bright_white 2§§
# check wrap if item starts right after double-space after item extending to end of width
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890 3
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
-line 21 on_black,bright_white 3§§
+line 20 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567890§§
+line 21 0 on_black,bright_white 3§§
# check wrap on item too large to fit into screen width minus indent
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_2345678
-line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
-line 20 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_234567§§
-line 21 on_black,bright_white 8
+line 19 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
+line 20 0 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_234567§§
+line 21 0 on_black,bright_white 8
# check wrapping calculation on double-width character (tbh not much of a test since the tester itself counts specifically this char as two, so it's pretty much the same as above testing with a sequence of two ASCII chars; mostly just ensures that the wrapping code relies on Terminal.length_to_term)
insert servermsglogged-and-line-unwrapped : +0 XXX ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 1234567 ð
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678 ð
-line 20 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
-line 21 on_black,bright_white ð§§
+line 20 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo :456789 123456789 123456789 123456789 12345678§§
+line 21 0 on_black,bright_white ð§§
insert servermsglogged : +0 MSG ::foo.bar.baz 002 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456ð
-line 19 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
-line 20 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456§§
-line 21 on_black,bright_white ð§§
+line 19 0 on_black,bright_white < §§:§§:§§ :foo.bar.baz 002 foo§§
+line 20 0 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456§§
+line 21 0 on_black,bright_white ð§§
# check interpretation and escape of formatting characters
insert servernotice : +0 XXX :*** check that {esc|ape}s, formatting not counting into wrap
-line 20 on_black,bright_white < §§:§§:§§ :*.?.net NOTICE * :*** check that {esc|ape}s, formatting not counting§§
-line 21 on_black,bright_white into wrap§§
+line 20 0 on_black,bright_white < §§:§§:§§ :*.?.net NOTICE * :*** check that {esc|ape}s, formatting not counting§§
+line 21 0 on_black,bright_white into wrap§§
> /window 2
-line 21 on_black,bright_white < §§:§§:§§ (§§§§§§) *** check that {esc|ape}s, formatting not counting into wrap§§
-line 21 on_black,bright_white,bold §§§§§§§§§§§§server§
+line 21 0 on_black,bright_white < §§:§§:§§ (§§§§§§) *** check that {esc|ape}s, formatting not counting into wrap§§
+line 21 0 on_black,bright_white,bold §§§§§§§§§§§§server§
diff --git a/src/tests/tui_status_line_scrolling.test b/src/tests/tui_status_line_scrolling.test
index 96064e6..3402d58 100644
--- a/src/tests/tui_status_line_scrolling.test
+++ b/src/tests/tui_status_line_scrolling.test
@@ -6,6 +6,10 @@ insert ./lib/001-to-usermode
insert servermsglogged : +0 MSG ::winWIN_ID!~winWIN_ID@bar.bar PRIVMSG foo :hi there
log WIN_ID < [winWIN_ID] hi there
+Ã status-line
+line 22 0 on_black,bright_white LINE
+line 22 FOCUS_X on_black,bright_white,bold [FOCUS_STR]
+
à Ã---------------------------------
insert connect-to-connected
@@ -19,44 +23,44 @@ insert new-hi : + WIN_ID :7
insert new-hi : + WIN_ID :8
insert new-hi : + WIN_ID :9
insert new-hi : + WIN_ID :10
-line 22 on_black,bright_white :start)=======([0] (1:32) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2)§§
+insert status-line : + FOCUS_X=15 FOCUS_STR=0 LINE ::start)=======(§§§ (1:32) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2)§§
# grow windows list to maximum before ellipsis necessary
insert new-hi : + WIN_ID :11
-line 22 on_black,bright_white :start)([0] (1:33) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:2)§§
+insert status-line : + FOCUS_X=8 FOCUS_STR=0 LINE ::start)(§§§ (1:33) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:2)§§
# grow list beyond, with focus on left force ellipsis to the right
insert new-hi : + WIN_ID :12
-line 22 on_black,bright_white :start)([0] (1:34) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:â¦>§§
+insert status-line : + FOCUS_X=8 FOCUS_STR=0 LINE ::start)(§§§ (1:34) (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:â¦>§§
# shrink (uncut) listing but grow title to the left more, forcing ellipsis still to cut earlier
> /window 1
-line 22 on_black,bright_white foo.bar.baz:debug)(0 [1] (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2â¦>§§
+insert status-line : + FOCUS_X=21 FOCUS_STR=1 LINE :foo.bar.baz:debug)(0 §§§ (2:7) (3:2) (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2â¦>§§
# further shrink uncut listing until ellipsis gone again; with focus not moving beyond left half, don't scroll yet
> /window 3
-line 22 on_black,bright_white foo.bar.baz/win3)(0 1 (2:7) [3] (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11â¦>§§
+insert status-line : + FOCUS_X=28 FOCUS_STR=3 LINE :foo.bar.baz/win3)(0 1 (2:7) §§§ (4:2) (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11â¦>§§
> /window 4
-line 22 on_black,bright_white foo.bar.baz/win4)(0 1 (2:7) 3 [4] (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) â¦>§§
+insert status-line : + FOCUS_X=30 FOCUS_STR=4 LINE :foo.bar.baz/win4)(0 1 (2:7) 3 §§§ (5:2) (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) â¦>§§
> /window 5
-line 22 on_black,bright_white foo.bar.baz/win5)(0 1 (2:7) 3 4 [5] (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) (12:2)§§
+insert status-line : + FOCUS_X=32 FOCUS_STR=5 LINE :foo.bar.baz/win5)(0 1 (2:7) 3 4 §§§ (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) (12:2)§§
# grow uncut listing again, re-establishing ellipsis to the right
insert new-hi : + WIN_ID :13
-line 22 on_black,bright_white foo.bar.baz/win5)(0 (1:1) (2:7) 3 4 [5] (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) â¦>§§
+insert status-line : + FOCUS_X=36 FOCUS_STR=5 LINE :foo.bar.baz/win5)(0 (1:1) (2:7) 3 4 §§§ (6:2) (7:2) (8:2) (9:2) (10:2) (11:2) â¦>§§
# move focus into middle of listing, scrolling so that ellipsis on both side
> /window 8
-line 22 on_black,bright_white foo.bar.baz/win8)<â¦:1) (2:7) 3 4 5 (6:2) (7:2) [8] (9:2) (10:2) (11:2) (12:2) â¦>§§
+insert status-line : + FOCUS_X=47 FOCUS_STR=8 LINE :foo.bar.baz/win8)<â¦:1) (2:7) 3 4 5 (6:2) (7:2) §§§ (9:2) (10:2) (11:2) (12:2) â¦>§§
# move focus further to the right, so that only ellipsis on the left
> /window 9
-line 22 on_black,bright_white foo.bar.baz/win9)<â¦:1) (2:7) 3 4 5 (6:2) (7:2) 8 [9] (10:2) (11:2) (12:2) (13:2)§§
+insert status-line : + FOCUS_X=49 FOCUS_STR=9 LINE :foo.bar.baz/win9)<â¦:1) (2:7) 3 4 5 (6:2) (7:2) 8 §§§ (10:2) (11:2) (12:2) (13:2)§§
# shrink uncut listing to return to full view again (no ellipses)
> /window 13
-line 22 on_black,bright_white foo.bar.baz/win13)(0 (1:1) (2:7) 3 4 5 (6:2) (7:2) 8 9 (10:2) (11:2) (12:2) [13]§§
+insert status-line : + FOCUS_X=76 FOCUS_STR=13 LINE :foo.bar.baz/win13)(0 (1:1) (2:7) 3 4 5 (6:2) (7:2) 8 9 (10:2) (11:2) (12:2) §§§§§§
# add new window, re-establishing ellipsis to the left, with focus remaining quite to the right
insert new-hi : + WIN_ID :14
-line 22 on_black,bright_white foo.bar.baz/win13)<â¦(2:7) 3 4 5 (6:2) (7:2) 8 9 (10:2) (11:2) (12:2) [13] (14:2)§§
+insert status-line : + FOCUS_X=69 FOCUS_STR=13 LINE :foo.bar.baz/win13)<â¦(2:7) 3 4 5 (6:2) (7:2) 8 9 (10:2) (11:2) (12:2) §§§§ (14:2)§§