summaryrefslogtreecommitdiff
path: root/test/snapshots/tagnav.snap
blob: c375e6445ce2b0e575414a1c050cb90011d548af (plain) (blame)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# 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 each pane's layout box, which
# carries its BODY mode as one character: `•` normal, `^` insert, `$` tty. A
# tag edit parks the body mode rather than overwriting it, so the box keeps
# saying what the pane we left will be when we hop back off its tagline.
file w.txt alpha\nbeta\ngamma
start 31 100 w.txt
wait 8000 Newcol Joincol
wait 8000 w.txt
stable 700 20000
# A FILE boots alone now, so the shell this script calls "the launch shell" is
# opened here: Alt-n opens it and focuses it, Alt-c puts it in a column of its
# own on the right, SPC w h comes back to the file. (`New`/`Newcol` open an
# empty +New scratch now, not a shell.)
key a-n
key a-c
stable 700 15000
key space w h
stable 400 5000
# 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 visits the column tag first, then the workspace tag. Both stay in normal
# navigation mode; neither hop drops into a pane body.
key k
stable 400 5000
snap column-tag
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 column-down
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, and its box reads `$` throughout —
# during the hop too, because the box shows the PARKED mode, not the tag's.
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`). `$` proves the destructive
# word is exactly last; four long-word steps back land on `Dump`, the visible
# non-destructive action used here. It 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 k
stable 400 5000
key $
stable 400 5000
snap topbar-dollar
key B B B B
stable 400 5000
snap topbar-dump-word
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 k
stable 400 5000
key $ B B
stable 400 5000
snap topbar-restore-word
key enter
stable 900 15000
snap topbar-restored