1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# RULE: a results buffer is a list of things you can RUN, and its traits say
# what a ROW IS. Every list before this one held LOCATIONS — a row with a
# `path:LINE:COL` word inside it — so n/N select that word and Enter Looks it.
# `SPC t t` (ThemeSel) opens the first one whose rows are COMMANDS: `Theme
# <name>`, exactly the line you would type, with no path in it to pick out, so
# n/N select the WHOLE ROW. One motion, two grains, and the same split either
# way — the step only SELECTS, and Tab (Exec, or the middle button, which is
# the same builtin) is what RUNS what it left. Walking the list therefore
# wears nothing as you pass; the theme changes on the Tab, and picking one is
# running it and stopping. There is still no preview state, nothing to confirm
# and nothing to cancel: the row you ran is the theme you have.
#
# Both halves of the ring are in the buffer: the three pardes ships with come
# first (helix, dark, acme), then everything tools/gen_themes.zig exported from
# the vendored helix .toml and zed .json files, sorted. The colors below are
# read with snapstyle, so this proves the generated themes are real data and
# not just names in a list.
lines t.txt 40
start 30 100 t.txt
wait 8000 t.txt
stable 700 20000
snap boot
# SPC t t: the list lands below the pane that asked, focus stays HERE — but a
# fresh output buffer is where the walk's ring starts, so the first n goes
# into the list and every one after it carries on down it.
key space t t
wait 10000 Theme helix
stable 700 15000
snap list
# n selects row 1 whole and Tab runs it: `Theme helix`, which is already the
# boot theme, so only the selection moves. That is the honest first step — an
# idempotent command has to be safe to run.
key n
key tab
stable 700 15000
snap step-helix
snapstyle step-helix
# ...and now the theme really does change under the cursor, one row at a time
key n
key tab
stable 700 15000
snap step-dark
snapstyle step-dark
key n
key tab
stable 700 15000
snap step-acme
snapstyle step-acme
# past the curated three and into the generated half, which is 225 themes
# sorted by name — so the fourth row is whatever sorts first, not whatever was
# vendored first. That is the point of sorting: the ring is the same everywhere
# whatever order the directory read handed the files over in.
key n
key tab
stable 700 15000
snap step-generated
snapstyle step-generated
# N walks back the same way — it is the exact inverse of n — and the Tab after
# it runs the row it lands on, so the theme rewinds too
key N
key tab
stable 700 15000
snap step-back
snapstyle step-back
# PICKING is just stopping: the theme the last Tab ran is still on, and the
# list is closed with an explicit Del. No window move is needed to get there —
# the walk lands IN the pane it steps, so the cursor has been in the list
# since the first n. Body-normal Esc is Last, so it deliberately leaves this
# document-like output buffer open.
# ...and the WHOLE ring is in there, all 228 rows: `ge` to the last line, which
# only reaches `Theme zenburn` if nothing truncated the buffer on the way in. It
# is an ordinary file pane, so it scrolls like one; a motion runs nothing and
# neither does a step, so no theme changes here and the one the last Tab chose
# is still on.
key g e
stable 700 15000
snap tail
key space d
settle 100
stable 700 15000
snap picked
snapstyle picked
|