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
|
# `/` file search: the pattern types into the tag (persistent, no popup);
# Enter searches the buffer in-core and writes `path:LINE:COL-ENDCOL text` into
# a +Search OUTPUT BUFFER (a file pane with no file behind it — no Save in its
# tag) — AND GOES TO THE FIRST HIT, which is the step `n` is and the look Enter
# is, run for you in that buffer. From there n/N SELECT the next/prev row and
# open nothing, and Enter — the look chord — is what scrolls the file pane to
# the hit AND SELECTS IT: the row names the match's whole span, not just where
# it starts. Esc abandons the input; a no-match search opens an EMPTY buffer
# (every search gets its own, stacked under the pane) with nothing in it for n
# to stop on, and goes nowhere.
file g.txt l1\nMARK a\nl3\nl4\nl5\nMARK b\nl7\nl8\nl9\nMARK c\nl11\nl12
# Builtins announce themselves by default, and an announcement is a band at
# the top of the body -- which moves every row this script clicks. What the
# verbs do is what is under test, not the announcement.
config Verbose off
start 31 180 -n 3
wait 8000 g.txt
stable 700 20000
# open g.txt: type the name in the shell, look it (as in look-file.snap)
press left 5 9
release left 5 9
stable 400 5000
key i
text g.txt
key esc
settle 100
stable 400 5000
press right 6 9
release right 6 9
wait 10000 MARK a
stable 700 15000
snap opened
# / starts the search input in the tag; the pattern is visible while typing
key /
stable 400 5000
text MARK
stable 400 5000
snap typing
key enter
# Locations stack the target under its line now, so the two halves are
# two rows: wait for both rather than for one joined line.
wait 10000 g.txt:2:1-4
wait 10000 MARK a
stable 700 10000
# ...and the submit already looked result 1: the file scrolled to line 2 and
# the four cells the pattern matched there came up selected — the styles below
# are what prove the second half of that. No `n` was pressed to get here.
snap results
snapstyle results
# n/N walk on from there, one row of the list per press, Enter looking what
# the step selected
key n
key enter
stable 700 15000
snap second
key n
key enter
stable 700 15000
snap third
# N walks back up to result 2 (line 6), Enter looks it
key N
key enter
stable 700 15000
snap back
# Esc abandons the input: the tag tail is restored
key /
text zz
key esc
settle 100
stable 400 5000
snap cancel
# a no-match search: nothing in the empty list for n to stop on, so the ring
# carries it back into the list that has rows and it resumes there
key /
text zzqq
key enter
stable 700 10000
key n
stable 400 5000
snap nomatch
|