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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# h/j/k/l ON A TAGLINE move focus BETWEEN taglines. A tag is a place in the
# LAYOUT, not just a line of text, so the four letters walk the layout and land
# on the neighbour's TAG (top row of the window), still in normal mode — you
# walk the taglines and never drop through a body. They run the SAME
# Left/Down/Up/Right builtins `SPC w h/j/k/l` and `Ctrl-w h/j/k/l` run: one
# focusDir, three routes to it. The ARROWS keep the in-tag grapheme motion, so
# no capability was traded away.
#
# Evidence is the `cursor=` header (the ACTIVE pane's cursor, which while a tag
# is focused sits on THAT pane's tag row) plus the tag text itself: a focused
# tag renders its owner's mode, so NOR means the tag is in normal mode and the
# pane we left is back in its body mode.
file w.txt alpha\nbeta\ngamma
start 30 100 w.txt
wait 8000 Kill Newcol
wait 8000 w.txt
stable 700 20000
# Alt-n: a shell below the file, so the left column has two rows and every
# direction has somewhere to go
key a-n
stable 700 15000
key space w k
stable 400 5000
snap start
# `:` -> the file's OWN tagline, normal mode, parked at the tail's start
key :
stable 400 5000
snap colon
# l -> right, onto the launch shell's TAGLINE (not its body)
key l
stable 400 5000
snap right-tag
# h -> back left onto the file's tagline
key h
stable 400 5000
snap left-tag
# j -> down onto the tagline of the shell under the file
key j
stable 400 5000
snap down-tag
# k -> back up onto the file's
key k
stable 400 5000
snap up-tag
# k again: nothing above the file — but "nothing" is not nowhere. Above the
# topmost tagline is the TOPBAR, row 0, the global one. It is not a pane, so
# focusDir can never find it; this fallback is the one place k walks off the
# layout entirely. Evidence is the cursor=0,0 header: the bar has the keyboard
# and parks on `Kill`.
key k
stable 400 5000
snap up-edge
# the bar speaks the tag's own one-line vocabulary: w to the next word start
key w
stable 400 5000
snap topbar-word
# h/l are plain graphemes up here — row 0 has no window to its left or right to
# walk to — and the arrows still mean what they always did
key l right
stable 400 5000
snap topbar-graphemes
# j is the mirror of the k that got you here: back DOWN onto the topmost pane's
# tagline, still in normal mode, so the hop is a round trip
key j
stable 400 5000
snap back-down
# the arrows are still in-tag motion: two rights walk two columns of the tail
key right right
stable 400 5000
snap arrows-still-motion
key esc
settle 100
stable 400 5000
snap back-to-body
# A TERMINAL MUST NOT LOSE ITS TTY MODE. Put the launch shell in raw tty mode
# (Ctrl-b), come back, then hop onto its tagline and off again: exitTagEdit
# restores the body mode the tag hijacked, so its prefix reads TTY again.
key c-w l
stable 400 5000
key c-b
stable 700 15000
snap tty-on
key c-w h
stable 400 5000
key :
key l
stable 400 5000
snap tty-tag
key esc
settle 100
stable 400 5000
snap tty-restored
# Enter/Tab on the BAR runs the word under the cursor through the very dispatch
# a middle click on it uses, and leaves the bar FIRST — `Kill` lives up here, so
# a builtin that frees the session must never return into a focused topbar (the
# same hazard the pane-tag chord has with `Del`). `Dump` is the visible one: the
# bar GROWS a `Restore <path>` word, which is also the case where the line gets
# longer than the column you were parked on.
key c-w h
stable 400 5000
key :
key k
stable 400 5000
key $
stable 400 5000
snap topbar-dollar
key enter
stable 700 15000
snap topbar-exec
# THE DELETION HAZARD, from the bar itself: `Restore` frees every pane and
# swaps the core out from under the caller. Walk back onto the word the Dump
# just grew — B twice off the tail, because the LONG word motions are the ones
# that step over a path in one go — and run it. The bar drops focus BEFORE the
# builtin, so nothing reaches for state the swap already freed.
key :
key k
stable 400 5000
key $ B B
stable 400 5000
snap topbar-restore-word
key enter
stable 900 15000
snap topbar-restored
|