aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_dump_config.py
diff options
context:
space:
mode:
authoruser <user@clank>2026-09-10 16:32:10 +0200
committeruser <user@clank>2026-09-10 16:32:10 +0200
commita2d08f4876226446c0052f033e8afea2f2ffbbf1 (patch)
treeac77189b9c928939202adca4a43298730bccd8d2 /tests/test_dump_config.py
parentsidebar: the new-tab button says what it is, given a row to say it on (diff)
downloadslosh-a2d08f4876226446c0052f033e8afea2f2ffbbf1.tar.gz
slosh-a2d08f4876226446c0052f033e8afea2f2ffbbf1.tar.xz
slosh-a2d08f4876226446c0052f033e8afea2f2ffbbf1.zip
sidebar: statuses wear italic instead of an indent, and can wear colour
Three columns of indent is a fifth of a sixteen-column sidebar, spent saying 'this belongs to the row above'. The slant says it in none: a status now starts in the same column its tab's name starts in, and is set in italic. That also survives the monochrome themes in contrib, where a colour-only distinction would have had nothing to spend. tab_status_fg / tab_status_bg are there for themes that do have colour to spend. The fg follows tab_count when a theme does not name it -- the same declared/derived split apply_scrolled makes -- so the six themes in contrib get coherent status rows without a line added to any of them. The bg is unset by default, because a band is opt-in and 'none' is what a translucent terminal wants; the row is padded so a band that *is* set covers the row rather than the words on it. Two things fell out. The padding loop existed three times and is now pad_cells. And cb_color wrote #000000 for an unset colour, so quietly pinned attach_bg -- 'gray ink on the terminal's own background', says its comment -- to a black band. Unset colours are now written commented out, the same trick the states block uses for what it wants re-derived rather than pinned.
Diffstat (limited to 'tests/test_dump_config.py')
-rw-r--r--tests/test_dump_config.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/test_dump_config.py b/tests/test_dump_config.py
index d6b3fd4..67679a1 100644
--- a/tests/test_dump_config.py
+++ b/tests/test_dump_config.py
@@ -106,7 +106,16 @@ def test_every_theme_colour_is_in_it():
src = open(SRC).read()
colours = set(re.findall(r'\{"([a-z_]+)", offsetof\(config_t', src))
text = dump()
- missing = sorted(c for c in colours if f" {c} " not in text)
+ # A colour that is *unset* is the terminal's own, and a theme block has no
+ # spelling for that -- parse_color takes #rrggbb and nothing else. Those
+ # are written commented out, so the dump still names the key while loading
+ # it back does not pin "none" to black. Same tolerance the settings check
+ # above already has.
+ missing = sorted(
+ c
+ for c in colours
+ if not re.search(r"^\s*(// )?%s[ \"]" % re.escape(c), text, re.M)
+ )
check(
f"all {len(colours)} colours are rendered",
not missing,