summaryrefslogtreecommitdiff
path: root/test/snapshots
diff options
context:
space:
mode:
Diffstat (limited to 'test/snapshots')
-rw-r--r--test/snapshots/cornerdrag-left.golden155
-rw-r--r--test/snapshots/cornerdrag-left.snap41
-rw-r--r--test/snapshots/grep.golden2
-rw-r--r--test/snapshots/grep.snap13
-rw-r--r--test/snapshots/jumps.snap35
-rw-r--r--test/snapshots/stepgrain.golden310
-rw-r--r--test/snapshots/stepgrain.snap77
-rw-r--r--test/snapshots/ttytaken.golden124
-rw-r--r--test/snapshots/ttytaken.snap43
9 files changed, 774 insertions, 26 deletions
diff --git a/test/snapshots/cornerdrag-left.golden b/test/snapshots/cornerdrag-left.golden
new file mode 100644
index 00000000..b87651b1
--- /dev/null
+++ b/test/snapshots/cornerdrag-left.golden
@@ -0,0 +1,155 @@
+== snap right-split grid=100x30 cursor=54,8
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls ls
+| w.txt w.txt
+|
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls
+| w.txt
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls
+| w.txt
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+== snap hover-corner grid=100x30 cursor=54,8
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del ╎ /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls ╎ ls
+| w.txt ╎ w.txt
+| ╎╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| ╎ /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ╎ ls
+| ╎ w.txt
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del ╎
+| ls ╎
+| w.txt ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+== snap hover-left-corner grid=100x30 cursor=54,8
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del ╎ /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls ╎ ls
+| w.txt ╎ w.txt
+| ╎
+| ╎ /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ╎ ls
+| ╎ w.txt
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+|╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del ╎
+| ls ╎
+| w.txt ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+== snap corner-drag grid=100x30 cursor=54,8
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/cornerdrag╎left/cwd New Del /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls ╎ ls
+| w.txt ╎ w.txt
+| ╎
+| ╎ /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ╎ ls
+| ╎ w.txt
+| ╎
+| ╎
+| ╎
+| ╎╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| ╎
+| ╎
+| ╎
+| ╎
+| /tmp/pardes-snap/cornerdrag╎left/cwd New Del
+| ls ╎
+| w.txt ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+| ╎
+== snap corner-done grid=100x30 cursor=34,15
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/cornerdrag- /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls ls
+| w.txt w.txt
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/cornerdrag-left/cwd New Del
+| ls
+| w.txt
+|
+| /tmp/pardes-snap/cornerdrag-
+| ls
+| w.txt
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
diff --git a/test/snapshots/cornerdrag-left.snap b/test/snapshots/cornerdrag-left.snap
new file mode 100644
index 00000000..c90dbc76
--- /dev/null
+++ b/test/snapshots/cornerdrag-left.snap
@@ -0,0 +1,41 @@
+# corner grabs on the RIGHT column's side of the v border. The v handle is the
+# LEFT column's last cell, so that column's own h hint runs THROUGH it while the
+# right column's hints start one cell further right — the crossing there reads as
+# a T butting into the junction rather than a full cross, and it is grabbable all
+# the same: one drag moves the column edge and the RIGHT column's pane edge.
+# Layout: windowops' -n 3 (col 0 x 0 w 50, panes on rows 1-15 and 16-29; col 1
+# x 50 w 50), then focus right and Alt-n so col 1 holds two panes as well, split
+# at ITS own row. The two corners on col 49 are then row 16 (col 0's seam, the
+# one that already worked) and row 5 (col 1's, the one this script is about).
+file w.txt x
+start 30 100 -n 3
+wait 8000 w.txt
+stable 700 20000
+# a second pane in the RIGHT column
+key c-w l
+stable 400 5000
+key a-n
+stable 700 15000
+snap right-split
+# hover col 1's corner: the v hint runs full height AND col 1's h hint lights,
+# from col 51 rightward. Before this that row was dark on the handle — only the
+# hovered column's seam lit, and the hovered cell belongs to col 0
+motion 50 5
+stable 400 5000
+snap hover-corner
+# CONTROL: col 0's own seam is still a left-column corner, its h hint drawn
+# through the handle from col 1 to the handle itself, unchanged
+motion 50 16
+stable 400 5000
+snap hover-left-corner
+# grab col 1's corner and drag down-left: the column preview and col 1's row
+# preview both follow the one mouse, the row dashes lying to the RIGHT of the v
+# line because they are the right column's
+press left 50 5
+drag left 30 12
+stable 400 5000
+snap corner-drag
+release left 30 12
+motion 45 25
+stable 500 8000
+snap corner-done
diff --git a/test/snapshots/grep.golden b/test/snapshots/grep.golden
index 846ab703..af4c4708 100644
--- a/test/snapshots/grep.golden
+++ b/test/snapshots/grep.golden
@@ -153,7 +153,7 @@
| 2 a.txt:3:6-11 last TARGET line
| 3 sub/b.txt:2:1-6 TARGET inside sub
| 4
-== snap nomatch grid=180x30 cursor=37,28
+== snap nomatch grid=180x30 cursor=62,3
|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
| /tmp/pardes-snap/grep/cwd/a.txt Save New Del /tmp/pardes-snap/grep/cwd New Del /tmp/pardes-snap/grep/cwd New Del
| 1 hello TARGET one ls ls
diff --git a/test/snapshots/grep.snap b/test/snapshots/grep.snap
index 1d3efc9e..ab708a25 100644
--- a/test/snapshots/grep.snap
+++ b/test/snapshots/grep.snap
@@ -6,7 +6,8 @@
# looking it SELECTS the hit — with the path RELATIVE to the directory
# of the pane that asked — the same directory its results buffer is named in,
# so the short name resolves; only a hit from outside that tree stays absolute.
-# n/N SELECT the next/prev row like any other result list and open nothing;
+# n/N SELECT the next/prev row like any other result list and open nothing —
+# one press per row, the location at its head, never the matched text after it;
# Enter looks what they leave selected, and a row pointing into a file nothing
# has open yet opens it.
dirmk sub
@@ -62,10 +63,12 @@ wait 10000 TARGET inside sub
stable 700 15000
snap opened-hit
# a pattern nothing holds: an empty list of its own, with nothing in it for n
-# to stop on — so the ring carries that step back into the TARGET list. The
-# look above is why both of those read the way they do: it left the cursor in
-# sub/b.txt, so the empty list is named in sub/ rather than cwd/, and it left
-# the hit SELECTED there (a ranged result row is one a look selects).
+# to stop on — so the ring carries that step out of it and on round. It lands
+# in the SHELL, whose `ls` row is free text and steps word by word: the TARGET
+# list is standing on its last row, and a row-grained walk has nothing left in
+# it to offer. The look above is why these read the way they do: it left the
+# cursor in sub/b.txt, so the empty list is named in sub/ rather than cwd/, and
+# it left the hit SELECTED there (a ranged result row is one a look selects).
# Armed from the LEADER, not the topbar word, because of that selection: a
# topbar execute chords whatever is selected into its argument, so a
# middle-click here would run `Grep TARGET` and never ask for a pattern at
diff --git a/test/snapshots/jumps.snap b/test/snapshots/jumps.snap
index db131bd4..d7d44967 100644
--- a/test/snapshots/jumps.snap
+++ b/test/snapshots/jumps.snap
@@ -64,19 +64,20 @@ snap last-back
key space j l
stable 700 15000
snap jumplist
-# n/N select the next/prev look-able span and Enter looks it, exactly as they
-# do a +Search: the stepped span is selected in the buffer (snapstyle) and the
-# Enter after it moves the pane the row names. Row 1 is the shell (no path, so
+# n/N select the next/prev row and Enter looks it, exactly as they do a
+# +Search: the stepped span is selected in the buffer (snapstyle) and the Enter
+# after it moves the pane the row names. Row 1 is the shell (no path, so
# `@pN`), row 2 the file at line 1, row 4 the file at line 100 — so the body
# visibly rides the list.
#
-# SPANS, not rows, and this buffer is the one place in the suite where the two
-# differ: an `@pN` row's trailing text is the pane's DIRECTORY, which is a
-# look-able word of its own, so row 1 and row 3 each hold TWO stops and
-# reaching the next row takes two steps. A file row's text is its content line
-# (`line 1`), which resolves to nothing, so those hold one. Stepping words
-# rather than rows is what makes the walk the same motion in a results buffer
-# and in the middle of a paragraph, and this is the price of that.
+# ONE PRESS PER ROW, and this buffer is where that rule earns itself: an `@pN`
+# row's trailing text is the pane's DIRECTORY, which is a look-able word of its
+# own, so rows 1 and 3 used to hold TWO stops each and reaching the next row
+# took two steps. A results buffer is a LIST — its rows are locations, and the
+# text after one says what is THERE rather than naming another place to go — so
+# the walk takes the location at the head of a row and moves on to the next row
+# (output_pane.Grain.line). Free text still steps every word: that is the
+# terminal walk in ttylook, and it is why the two goldens differ.
#
# An `@pN` row moves focus like any other, which it did not use to: the STEP
# only selects now, and the look Enter runs goes to the pane by the same route
@@ -86,26 +87,20 @@ key enter
stable 700 15000
snap step1-shell
snapstyle step1-shell
-# past the directory on row 1, then onto row 2
-key n
-stable 400 5000
+# on to row 2 — one press, the directory on row 1 is no longer a stop of its own
key n
key enter
stable 700 15000
snap step2-file
-# row 3 is the shell again, both its spans, and then row 4
-key n
-stable 400 5000
+# row 3 is the shell again, then row 4
key n
stable 400 5000
key n
key enter
stable 700 15000
snap step4-line100
-# N is the exact inverse: the same two spans of row 3 in the other order, so
-# two presses land back on its location and Enter follows it to the shell
-key N
-stable 400 5000
+# N is the exact inverse: one press back onto row 3's location, and Enter
+# follows it to the shell
key N
key enter
stable 700 15000
diff --git a/test/snapshots/stepgrain.golden b/test/snapshots/stepgrain.golden
new file mode 100644
index 00000000..f269c865
--- /dev/null
+++ b/test/snapshots/stepgrain.golden
@@ -0,0 +1,310 @@
+== snap results grid=150x30 cursor=7,2
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+== snap step-row1 grid=150x30 cursor=7,27
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+== style step-row1
+|0: 0-56 #949494,#121212, 57-149 d,#121212,
+|1: 0-1 #ffffff,#262626, 2-129 #949494,#121212, 130-149 d,#121212,
+|2: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-149 d,#080808,
+|3: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+|4: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|5: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|6: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|7: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|8: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|9: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|10: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|11: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|12: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|13: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|14: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|15: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|16: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|17: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|18: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|19: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|20: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|21: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|22: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|23: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|24: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|25: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|26: 0-1 #ffffff,#626262, 2-129 #949494,#121212, 130-149 d,#121212,
+|27: 0-0 d,#444444, 1-1 d,#080808, 2-6 #949494,#121212, 7-18 #080808,#80a0ff, 19-35 #bdbdbd,#080808, 36-149 d,#080808,
+|28: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-53 #bdbdbd,#080808, 54-149 d,#080808,
+|29: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+== snap step-row2 grid=150x30 cursor=7,28
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+== style step-row2
+|0: 0-56 #949494,#121212, 57-149 d,#121212,
+|1: 0-1 #ffffff,#262626, 2-129 #949494,#121212, 130-149 d,#121212,
+|2: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-149 d,#080808,
+|3: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+|4: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|5: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|6: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|7: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|8: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|9: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|10: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|11: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|12: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|13: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|14: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|15: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|16: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|17: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|18: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|19: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|20: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|21: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|22: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|23: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|24: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|25: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|26: 0-1 #ffffff,#626262, 2-129 #949494,#121212, 130-149 d,#121212,
+|27: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-35 #bdbdbd,#080808, 36-149 d,#080808,
+|28: 0-0 d,#444444, 1-1 d,#080808, 2-6 #949494,#121212, 7-19 #080808,#80a0ff, 20-53 #bdbdbd,#080808, 54-149 d,#080808,
+|29: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+== snap step-row3 grid=150x30 cursor=7,28
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+| 4
+== snap step-wrap grid=150x30 cursor=7,27
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+== snap blank-in-path grid=150x30 cursor=7,25
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 two words.txt
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
+== style blank-in-path
+|0: 0-56 #949494,#121212, 57-149 d,#121212,
+|1: 0-1 #ffffff,#262626, 2-129 #949494,#121212, 130-149 d,#121212,
+|2: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-149 d,#080808,
+|3: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+|4: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|5: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|6: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|7: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|8: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|9: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|10: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|11: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|12: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|13: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|14: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|15: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|16: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|17: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|18: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|19: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|20: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|21: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|22: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|23: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-149 d,#080808,
+|24: 0-1 #ffffff,#626262, 2-129 #949494,#121212, 130-149 d,#121212,
+|25: 0-0 d,#444444, 1-1 d,#080808, 2-6 #949494,#121212, 7-19 #080808,#80a0ff, 20-149 d,#080808,
+|26: 0-1 #ffffff,#262626, 2-129 #949494,#121212, 130-149 d,#121212,
+|27: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-18 #080808,#80a0ff, 19-35 #bdbdbd,#080808, 36-149 d,#080808,
+|28: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-53 #bdbdbd,#080808, 54-149 d,#080808,
+|29: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-39 #bdbdbd,#080808, 40-149 d,#080808,
+== snap blank-opened grid=150x30 cursor=7,14
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/stepgrain/cwd/a.txt Save New Del
+| 1 hello ZQMARK one
+| 2 see also sub/b.txt for ZQMARK two
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/two words.txt Save New Del
+| 1
+|
+|
+|
+|
+|
+|
+|
+|
+|
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 two words.txt
+| /tmp/pardes-snap/stepgrain/cwd/+Search New Del
+| 1 a.txt:1:7-12 hello ZQMARK one
+| 2 a.txt:2:24-29 see also sub/b.txt for ZQMARK two
+| 3 sub/b.txt:1:1-6 ZQMARK inside sub
diff --git a/test/snapshots/stepgrain.snap b/test/snapshots/stepgrain.snap
new file mode 100644
index 00000000..a12d7bbd
--- /dev/null
+++ b/test/snapshots/stepgrain.snap
@@ -0,0 +1,77 @@
+# WHAT ONE PRESS OF `n` TAKES, and why that is not one answer. A pane's rows
+# decide it (output_pane.Grain, read in Pardes.lookSpanIn):
+#
+# free text — a terminal, a file, a PDF — is stepped WORD by word, several
+# stops to a line, because a line of it may name several places at once (the
+# `ls` row in ttylook.snap hops big.txt -> plain.txt -> sub);
+#
+# a RESULTS BUFFER is stepped ROW by row, on the location at the head of the
+# row, because a row there IS one location and the words after it are the
+# MATCHED TEXT — the same hit, spelled out. That text is full of look-able
+# words, and stopping on them was stopping on the same result twice.
+#
+# This script is the second rule. Row 2 below matched on a line that mentions
+# `sub/b.txt`, so the old word-grained walk stopped there before it ever
+# reached row 3; now `n` presses and rows correspond one to one, and the fourth
+# press wraps the ring back to row 1.
+#
+# LARGEST from the head, so a path with a BLANK in it is one span rather than
+# the word in front of it: `two words.txt` selects whole and opens.
+dirmk sub
+file a.txt hello ZQMARK one\nsee also sub/b.txt for ZQMARK two
+file sub/b.txt ZQMARK inside sub
+run touch 'two words.txt'
+start 30 150 a.txt
+wait 8000 hello ZQMARK
+stable 700 20000
+# Grep from the leader: three hits, sorted by path, the empty file contributing
+# none. Row 2 is the one whose TEXT holds a path.
+key space
+key f
+key g
+stable 400 5000
+text ZQMARK
+key enter
+wait 10000 sub/b.txt:1:1
+stable 700 15000
+snap results
+# one press, one row: the head of row 1...
+key n
+stable 400 5000
+snap step-row1
+snapstyle step-row1
+# ...the head of row 2, and NOT the `sub/b.txt` sitting in its matched text —
+# the cursor column is the assertion
+key n
+stable 400 5000
+snap step-row2
+snapstyle step-row2
+# ...row 3, and then the ring comes round to row 1 again
+key n
+stable 400 5000
+snap step-row3
+key n
+stable 400 5000
+snap step-wrap
+# Back into the file, so the Find below is asked from a pane that is not a
+# results buffer (fillResults never refills the buffer it was asked from).
+press left 8 3
+release left 8 3
+stable 400 5000
+# A path with a blank in it: the row is one span from its first cell, because
+# the walk asks about the LONGEST run of the row first and the filesystem is
+# what vouches for it. Enter then opens exactly what is selected.
+key space
+key f
+key f
+text words
+key enter
+wait 10000 two words.txt
+stable 700 15000
+key n
+stable 400 5000
+snap blank-in-path
+snapstyle blank-in-path
+key enter
+stable 700 15000
+snap blank-opened
diff --git a/test/snapshots/ttytaken.golden b/test/snapshots/ttytaken.golden
new file mode 100644
index 00000000..960081d1
--- /dev/null
+++ b/test/snapshots/ttytaken.golden
@@ -0,0 +1,124 @@
+== snap opened grid=100x30 cursor=7,2
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/ttytaken/cwd/cmd.txt Save New D /tmp/pardes-snap/ttytaken/cwd New Del
+| 1 echo TAKEN''ONE ls
+| 2 echo TAKEN''TWO big.txt cmd.txt
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+== snap at-prompt grid=100x30 cursor=7,2
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/ttytaken/cwd/cmd.txt Save New D /tmp/pardes-snap/ttytaken/cwd New Del
+| 1 echo TAKEN''ONE ls
+| 2 echo TAKEN''TWO big.txt cmd.txt
+| echo TAKEN''ONE
+| TAKENONE
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+|
+== snap paging grid=100x30 cursor=59,29
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/ttytaken/cwd/cmd.txt Save New D$ /tmp/pardes-snap/ttytaken/cwd New Del
+| 1 echo TAKEN''ONE line 1
+| 2 echo TAKEN''TWO line 2
+| line 3
+| line 4
+| line 5
+| line 6
+| line 7
+| line 8
+| line 9
+| line 10
+| line 11
+| line 12
+| line 13
+| line 14
+| line 15
+| line 16
+| line 17
+| line 18
+| line 19
+| line 20
+| line 21
+| line 22
+| line 23
+| line 24
+| line 25
+| line 26
+| line 27
+| big.txt
+== snap spawned grid=100x30 cursor=53,25
+|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill
+| /tmp/pardes-snap/ttytaken/cwd/cmd.txt Save New D$ /tmp/pardes-snap/ttytaken/cwd New Del
+| 1 echo TAKEN''ONE line 1
+| 2 echo TAKEN''TWO line 2
+| line 3
+| line 4
+| line 5
+| line 6
+| line 7
+| line 8
+| line 9
+| line 10
+| line 11
+| line 12
+| line 13
+| line 14
+| line 15
+| line 16
+| line 17
+| line 18
+| line 19
+| line 20
+| line 21
+| line 22
+| line 23
+| :
+| /tmp/pardes-snap/ttytaken/cwd New Del
+| echo TAKEN''TWO
+| TAKENTWO
+|
diff --git a/test/snapshots/ttytaken.snap b/test/snapshots/ttytaken.snap
new file mode 100644
index 00000000..6505fc63
--- /dev/null
+++ b/test/snapshots/ttytaken.snap
@@ -0,0 +1,43 @@
+# Process monitoring, end to end. A pane whose tty is held by a full-screen
+# program is not somewhere a command line may be typed: the SAME middle-drag
+# Exec goes into the shell while it sits at its prompt, and into a NEW shell
+# beside it once `less` owns the terminal — where it runs, instead of becoming
+# keystrokes the pager would eat. Nothing about the pager's screen changes.
+file cmd.txt echo TAKEN''ONE\necho TAKEN''TWO
+lines big.txt 40
+start 30 100 -n 1
+wait 8000 cmd.txt
+stable 700 20000
+# open the command file by looking its name in the greeting `ls`
+press right 14 4
+release right 14 4
+wait 10000 echo TAKEN
+stable 700 20000
+snap opened
+# at the prompt: the drag runs in the shell that is already on this directory
+press middle 8 3
+drag middle 22 3
+release middle 22 3
+wait 10000 TAKENONE
+stable 700 20000
+snap at-prompt
+# ...and now a pager owns that terminal. Ctrl-b is raw tty (config.tty_toggle),
+# which is how a script types AT the shell instead of into the pane's own edit
+# buffer — the same way exec.snap runs a command line.
+press left 60 8
+release left 60 8
+stable 400 5000
+key c-b
+stable 400 5000
+text env LESS= less big.txt
+key enter
+wait 10000 line 1
+stable 700 20000
+snap paging
+# the same gesture on the second line: a new shell, not `less` keystrokes
+press middle 8 4
+drag middle 22 4
+release middle 22 4
+wait 10000 TAKENTWO
+stable 700 20000
+snap spawned