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
|
# The Find builtin (SPC f f) = `fd`, in-core: it arms the SAME tag input `/`
# does, but Enter walks the pane's DIRECTORY instead of its text and writes one
# matching path per row into a "+Search" OUTPUT BUFFER. Every row is therefore
# an ordinary look target, which is the whole point: n/N step the rows and look
# them with no code of their own, opening each found file, and focus returns to
# the pane that owns the search so the next n keeps stepping. The walk skips
# .git, matches the NAME case-insensitively, and sorts (readdir order is not
# stable). `SPC f s` is Save, which moved out of `w` to make this group.
dirmk sub
dirmk sub/nest
dirmk .git
file here.txt Find
file zqmark-alpha.txt alpha body
file sub/ZQMARK-beta.txt beta body
file sub/nest/zqmark-gamma.txt gamma body
file other.txt nothing to match here
file .git/zqmark-hidden.txt hidden body
start 40 120 here.txt
wait 8000 here.txt
stable 700 20000
# SPC f is a GROUP now (Find + Save): the indicator stays on the tag
key space
key f
stable 400 5000
snap group
# ... and the second f arms the input, marker visible in the tag
key f
stable 400 5000
snap armed
text zqm
stable 400 5000
snap typing
# Enter walks: three hits, sorted, .git's copy skipped, other.txt not matched
key enter
wait 10000 zqmark-alpha.txt
stable 700 15000
snap results
# n looks row 1 — a path, so the file OPENS — and focus comes back here. The
# look comes FROM the results buffer, but that is an output pane and not a
# document, so the file joins the docs above it (below here.txt) instead of
# stacking under the list: the +Search stays at the foot of the column.
key n
wait 10000 beta body
stable 700 15000
snap first
snapstyle first
key n
wait 10000 gamma body
stable 700 15000
snap second
key n
wait 10000 alpha body
stable 700 15000
snap third
# N walks back up: the file is already open, so the look just focuses it
key N
stable 700 15000
snap back
# executing the WORD Find (middle-click in a body) arms the same input — the
# enum IS the dispatch — and Esc abandons it, restoring the tag tail
press middle 8 3
release middle 8 3
stable 700 10000
snap word
key esc
settle 100
stable 400 5000
snap cancel
# a no-match walk opens an empty list; n then has nowhere to go. The list is
# exactly as tall as its results — one blank row plus its tag — and it stacks
# above the earlier one, whose height is untouched.
key space
key f
key f
text zzqq
key enter
stable 700 10000
key n
stable 400 5000
snap nomatch
# ... and it grows BACK when the next search finds more: the refit trades rows
# with the neighbour in both directions, so three hits are three rows again
key space
key f
key f
text zqm
key enter
wait 10000 zqmark-alpha.txt
stable 700 15000
snap refit
# Find is a TOPBAR word too (row 1, its own column, next to Grep): the same
# builtin the leader path runs, reached with the mouse. Chorded — a selection
# held when it runs IS the argument — so dragging over `alpha` and clicking
# Find walks for that name with nothing typed and no input armed.
press left 8 8
drag left 13 8
release left 13 8
stable 400 5000
press middle 40 1
release middle 40 1
stable 700 15000
snap topbar
|