summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-07-27 10:52:32 -0300
committerGabriel Schneider <[email protected]>2026-08-01 15:02:07 -0300
commit6877a61ef40ad0d8e762a28d0a3f5fa9bfefaff2 (patch)
treeaabc3aa64afb2da01a67d8716cbd964743e679ed
parentc79612b523c1526202335302e1e49c078ca317cf (diff)
downloadpardes-6877a61ef40ad0d8e762a28d0a3f5fa9bfefaff2.tar.gz
pardes-6877a61ef40ad0d8e762a28d0a3f5fa9bfefaff2.zip
an output pane is not a document: +Search/+Help split below the pane that asked, never into a column of their own
placeDoc classified any file pane as a doc, so a +Search opened from a lone shell took layoutInsertColumn(0) - a whole new leftmost column, shoving every existing column sideways - and an open results list was then eligible as the split parent for a real file, stacking documents under the list. An output buffer has no file behind it and no Save; it is the result list belonging to the pane that asked for it. Now it is that on both sides of the rule: it splits below from_id whatever kind of pane that is (a source that died falls back to stackDocLeft, the same last resort a full column bar uses), and it is skipped when a real doc hunts for its split parent, so a file opened from a search row joins the docs instead of the results. Real docs are untouched: fsearch/rsearch/look-file/tutor/lookpanes all pass unchanged. psearch is the proof - its results snap was two columns (the shell pushed to x=70, its gutter run at 70-71) and is now one 140-wide column with the +Search stacked below at the same x origin.
-rw-r--r--docs/design.typ5
-rw-r--r--src/pardes.zig19
-rw-r--r--src/tutor.txt12
-rw-r--r--test/snapshots/find.golden144
-rw-r--r--test/snapshots/find.snap5
-rw-r--r--test/snapshots/leader.golden32
-rw-r--r--test/snapshots/leader.snap4
-rw-r--r--test/snapshots/psearch.golden218
-rw-r--r--test/snapshots/psearch.snap18
9 files changed, 241 insertions, 216 deletions
diff --git a/docs/design.typ b/docs/design.typ
index c7284049..118459e1 100644
--- a/docs/design.typ
+++ b/docs/design.typ
@@ -211,7 +211,10 @@ backwards, duplicate dirs skipped; absolute words try one dir and stop) so a
relative name is openable from any window that can see it; dir → shell + `ls`
in source column (dedup by cwd), file → file pane at line (dedup by path,
first doc opens left column and may evict a lone pristine shell; later docs
-split below the existing doc), image ext → image pane. Middle+left chord: kept
+split below the existing doc — an output pane, `+Search`/`+Help`, is not a
+doc for either half of that rule: it never claims a column, it splits below
+whatever pane asked for it, and nothing splits from it), image ext → image
+pane. Middle+left chord: kept
left selection appended as trailing CLI argument. Wheel: scroll hovered pane,
batched.
diff --git a/src/pardes.zig b/src/pardes.zig
index d3376273..31757732 100644
--- a/src/pardes.zig
+++ b/src/pardes.zig
@@ -4940,19 +4940,24 @@ pub const Pardes = struct {
p.placeDoc(id, free, np);
}
- /// place a fresh doc pane. Any doc already open is the split parent (the
+ /// place a fresh doc pane. An OUTPUT buffer (+Search/+Help) is NOT a
+ /// document: it is the result list belonging to the pane that asked for it,
+ /// so it never claims a column and is never anyone else's split parent — it
+ /// lands right below `from_id`, be that a shell, a file or another list.
+ /// A real doc joins the docs: any doc already open is the split parent (the
/// source if it IS one, else the first found) and the newcomer lands right
/// below it, so all docs share one column. The FIRST doc of the session
/// instead gets a column of its own on the left (acme: files left, shells
- /// right) — nothing is displaced, the other columns just narrow. Only a
- /// full column bar falls back to stacking into the leftmost one.
+ /// right) — nothing is displaced, the other columns just narrow. A full
+ /// column bar, or a result list whose source died, stacks into the leftmost.
fn placeDoc(p: *Pardes, from_id: usize, free: usize, nt: *Pane) void {
+ const doc = if (nt.file) |f| !f.output else true; // an image is a doc
var src_id: ?usize = null;
- if (p.panes[from_id]) |src| if (src.file != null or src.image != null) {
+ if (p.panes[from_id]) |src| if (!doc or (if (src.file) |f| !f.output else src.image != null)) {
src_id = from_id;
};
- if (src_id == null) for (p.panes, 0..) |sl, i| {
- if (sl) |pp| if ((pp.file != null or pp.image != null) and i != free) {
+ if (doc and src_id == null) for (p.panes, 0..) |sl, i| {
+ if (sl) |pp| if (i != free and (if (pp.file) |f| !f.output else pp.image != null)) {
src_id = i;
break;
};
@@ -4965,7 +4970,7 @@ pub const Pardes = struct {
p.active = free;
return;
}
- if (p.ncol < MAX_COLS) {
+ if (doc and p.ncol < MAX_COLS) {
p.layoutInsertColumn(0, free);
p.active = free;
return;
diff --git a/src/tutor.txt b/src/tutor.txt
index 195173c6..39a869e2 100644
--- a/src/tutor.txt
+++ b/src/tutor.txt
@@ -139,8 +139,11 @@
and case-insensitive, and writes one row per hit into a "+Search" pane.
That is an OUTPUT BUFFER: a file pane with no file behind it, so it has
no Save, but everything else about it is an ordinary buffer you can read,
- edit, select and look in. `n`/`N` step the rows and look each one, so the
- view follows along. Right-clicking a word that names no file in ANY open
+ edit, select and look in. It is not a document, though, and never takes a
+ column of its own: it opens BELOW the pane that asked for it, in that
+ pane's column, be that a file or a shell — and a file you then open from
+ its rows goes where files go, not under the list. `n`/`N` step the rows
+ and look each one, so the view follows along. Right-clicking a word that names no file in ANY open
pane's directory searches for it — acme's button 3 — except in tty mode,
where the click belongs to the program on the other end. On a shell with no
search armed, n/N instead step the lookable tokens in its output.
@@ -494,8 +497,9 @@
`?` works at ANY depth: SPC ? lists everything, SPC h ? lists only
what the "h" group holds. Help writes into a "+Help" OUTPUT BUFFER,
- the same kind of pane "/" search results land in — ordinary text, so
- the names in it are live: middle-click "Tutor" there and it opens.
+ the same kind of pane "/" search results land in — so it opens below
+ the pane you asked from, never in a column of its own — and ordinary
+ text, so the names in it are live: middle-click "Tutor" and it opens.
(No practice blocks: these run builtins, not text edits.)
diff --git a/test/snapshots/find.golden b/test/snapshots/find.golden
index 25bae1df..59b939ae 100644
--- a/test/snapshots/find.golden
+++ b/test/snapshots/find.golden
@@ -174,8 +174,8 @@
|
|
|
-|
-|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -194,8 +194,8 @@
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
+|
+|
|
|
|
@@ -215,8 +215,8 @@
|8: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|9: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
-|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
-|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
+|11: 0-1 d,#262626, 2-59 #949494,#121212, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
+|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-15 #bdbdbd,#080808, 16-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
@@ -235,8 +235,8 @@
|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|30: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
-|31: 0-1 d,#262626, 2-59 #949494,#121212, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
-|32: 0-1 d,#444444, 2-6 #626262,#080808, 7-15 #bdbdbd,#080808, 16-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
+|31: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
+|32: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|33: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|34: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
|35: 0-1 d,#444444, 2-6 #626262,#080808, 7-59 d,#080808, 60-61 d,#444444, 62-119 #bdbdbd,#080808,
@@ -251,13 +251,13 @@
| here.txt other.txt sub zqmark-alpha.txt
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -271,13 +271,13 @@
| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
| 3 /tmp/pardes-snap/find/cwd/zqmark-alpha.txt
| 4
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
+|
+|
+|
+|
|
|
|
@@ -289,13 +289,16 @@
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/find/cwd/here.txt Save Del NOR /tmp/pardes-snap/find/cwd Del
| 1 Find
-| here.txt other.txt sub zqmark-alpha.txt
-|
-|
+| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del here.txt other.txt sub zqmark-alpha.txt
+| 1 alpha body
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -304,21 +307,18 @@
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/+Search Del
+| 1 /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt
+| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
+| 3 /tmp/pardes-snap/find/cwd/zqmark-alpha.txt
+| 4
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/+Search Del
-| 1 /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt
-| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del
-| 1 alpha body
|
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
|
|
|
@@ -330,11 +330,16 @@
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/find/cwd/here.txt Save Del NOR /tmp/pardes-snap/find/cwd Del
| 1 Find
-| here.txt other.txt sub zqmark-alpha.txt
+| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del here.txt other.txt sub zqmark-alpha.txt
+| 1 alpha body
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -343,25 +348,20 @@
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/+Search Del
+| 1 /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt
+| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
+| 3 /tmp/pardes-snap/find/cwd/zqmark-alpha.txt
+| 4
|
|
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/+Search Del
-| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
-| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del
-| 1 alpha body
|
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
-|
-|
|
|
|
@@ -370,12 +370,17 @@
== snap word grid=120x40 cursor=56,1
|Kill Newcol Tutor Debug NextColor Dump
| INS /tmp/pardes-snap/find/cwd/here.txt Save Del Find / NOR /tmp/pardes-snap/find/cwd Del
-| 1 Find
-| here.txt other.txt sub zqmark-alpha.txt
+|╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del here.txt other.txt sub zqmark-alpha.txt
+| 1 alpha body
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -384,24 +389,19 @@
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/+Search Del
+| 1 /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt
+| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
+| 3 /tmp/pardes-snap/find/cwd/zqmark-alpha.txt
+| 4
|
|
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/+Search Del
-| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
-| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del
-| 1 alpha body
-|
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
-|
|
|
|
@@ -411,14 +411,17 @@
== snap cancel grid=120x40 cursor=7,2
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/find/cwd/here.txt Save Del NOR /tmp/pardes-snap/find/cwd Del
-| 1 Find
-| here.txt other.txt sub zqmark-alpha.txt
-|
-|
+|╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del here.txt other.txt sub zqmark-alpha.txt
+| 1 alpha body
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -427,21 +430,18 @@
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/+Search Del
+| 1 /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt
+| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
+| 3 /tmp/pardes-snap/find/cwd/zqmark-alpha.txt
+| 4
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/+Search Del
-| 2 /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt
-| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del
-| 1 alpha body
|
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
|
|
|
@@ -452,12 +452,17 @@
== snap nomatch grid=120x40 cursor=7,2
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/find/cwd/here.txt Save Del NOR /tmp/pardes-snap/find/cwd Del
-| 1 Find
-| here.txt other.txt sub zqmark-alpha.txt
+|╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
+| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del here.txt other.txt sub zqmark-alpha.txt
+| 1 alpha body
|
+| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
+| 1 gamma body
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
+| 1 beta body
|
|
|
@@ -466,23 +471,18 @@
|
|
|
+| NOR /tmp/pardes-snap/find/cwd/+Search Del
+| 1
+|
|
|
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/+Search Del
-| 1
-| NOR /tmp/pardes-snap/find/cwd/zqmark-alpha.txt Save Del
-| 1 alpha body
|
-| NOR /tmp/pardes-snap/find/cwd/sub/nest/zqmark-gamma.txt Sa
-| 1 gamma body
|
|
|
-| NOR /tmp/pardes-snap/find/cwd/sub/ZQMARK-beta.txt Save Del
-| 1 beta body
|
|
|
diff --git a/test/snapshots/find.snap b/test/snapshots/find.snap
index 28d5ebb2..03fefaa7 100644
--- a/test/snapshots/find.snap
+++ b/test/snapshots/find.snap
@@ -35,7 +35,10 @@ 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
+# 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
diff --git a/test/snapshots/leader.golden b/test/snapshots/leader.golden
index 497f1e3d..7ad00456 100644
--- a/test/snapshots/leader.golden
+++ b/test/snapshots/leader.golden
@@ -244,7 +244,7 @@
|
|
|
-== snap tutor grid=100x40 cursor=7,32
+== snap tutor grid=100x40 cursor=7,12
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/leader/cwd/cmds.txt Save De NOR /tmp/pardes-snap/leader/cwd Del
| 1 Help
@@ -256,6 +256,21 @@
|
|
|
+| NOR /Tutor Save Del
+| 1
+| 2 PARDES TUTOR
+| 3 tmux + vi + acme, from
+| 4
+| 5 The model is acme's: EVERYTHING is
+| 6 the same way. Modal editing (helix-
+| 7 Press j until you reach the introdu
+| 8
+| 9
+| NOR /tmp/pardes-snap/leader/cwd/+Help Del
+| 1 pardes builtins under SPC h
+| 2
+| 3 SPC h t Tutor
+| 4
|
|
|
@@ -266,25 +281,10 @@
|
|
|
-| NOR /tmp/pardes-snap/leader/cwd/+Help Del
-| 1 pardes builtins under SPC h
-| 2
-| 3 SPC h t Tutor
-| 4
|
|
|
|
-|
-| NOR /Tutor Save Del
-| 1
-| 2 PARDES TUTOR
-| 3 tmux + vi + acme, from
-| 4
-| 5 The model is acme's: EVERYTHING is
-| 6 the same way. Modal editing (helix-
-| 7 Press j until you reach the introdu
-| 8
== snap deleted grid=100x40 cursor=7,22
|Kill Newcol Tutor Debug NextColor Dump
| NOR /tmp/pardes-snap/leader/cwd/cmds.txt Save De NOR /tmp/pardes-snap/leader/cwd Del
diff --git a/test/snapshots/leader.snap b/test/snapshots/leader.snap
index 4d01d2e0..70b8a4d4 100644
--- a/test/snapshots/leader.snap
+++ b/test/snapshots/leader.snap
@@ -44,7 +44,9 @@ key ?
wait 10000 under SPC h
stable 700 15000
snap help-group
-# `SPC h t`: the Tutor builtin, zero arguments
+# `SPC h t`: the Tutor builtin, zero arguments. It runs from the +Help pane,
+# but that is an output pane and not a document — so the tutor lands under
+# cmds.txt, the real doc, with the listing left at the foot of the column.
key space
key h
key t
diff --git a/test/snapshots/psearch.golden b/test/snapshots/psearch.golden
index ae5b2b34..c89ec509 100644
--- a/test/snapshots/psearch.golden
+++ b/test/snapshots/psearch.golden
@@ -60,21 +60,21 @@
|
|
|
-== snap results grid=140x30 cursor=74,8
+== snap results grid=140x30 cursor=4,8
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1 @p0:2:3 x MARK a
-| 2 @p0:4:3 x MARK b x MARK a
-| 3 @p0:6:3 x MARK c zz
-| 4 x MARK b
-| zz
-| x MARK c
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1 @p0:2:3 x MARK a
+| 2 @p0:4:3 x MARK b
+| 3 @p0:6:3 x MARK c
+| 4
|
|
|
@@ -91,21 +91,21 @@
|
|
|
-== snap first grid=140x30 cursor=74,3
+== snap first grid=140x30 cursor=4,3
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1 @p0:2:3 x MARK a
-| 2 @p0:4:3 x MARK b x MARK a
-| 3 @p0:6:3 x MARK c zz
-| 4 x MARK b
-| zz
-| x MARK c
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1 @p0:2:3 x MARK a
+| 2 @p0:4:3 x MARK b
+| 3 @p0:6:3 x MARK c
+| 4
|
|
|
@@ -124,50 +124,50 @@
|
== style first
|0: 0-37 #949494,#121212, 38-139 d,#121212,
-|1: 0-1 d,#262626, 2-45 #949494,#121212, 46-69 d,#121212, 70-71 d,#626262, 72-107 #949494,#121212, 108-139 d,#121212,
-|2: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 #d8c8a8,#4a3a1e, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|3: 0-1 d,#444444, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|4: 0-1 d,#444444, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|5: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|6: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|7: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|8: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|9: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|16: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|17: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|18: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|19: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|20: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|21: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|22: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|23: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|24: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|25: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|26: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|27: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-69 d,#080808, 70-71 d,#444444, 72-139 #bdbdbd,#080808,
-== snap second grid=140x30 cursor=74,5
+|1: 0-1 d,#626262, 2-37 #949494,#121212, 38-139 d,#121212,
+|2: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|3: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|4: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|5: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|6: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|7: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|8: 0-1 d,#444444, 2-139 #bdbdbd,#080808,
+|9: 0-1 d,#262626, 2-45 #949494,#121212, 46-139 d,#121212,
+|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 #d8c8a8,#4a3a1e,
+|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-139 d,#080808,
+|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-139 d,#080808,
+|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|16: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|17: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|18: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|19: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|20: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|21: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|22: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|23: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|24: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|25: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|26: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|27: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-139 d,#080808,
+== snap second grid=140x30 cursor=4,5
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1 @p0:2:3 x MARK a
-| 2 @p0:4:3 x MARK b x MARK a
-| 3 @p0:6:3 x MARK c zz
-| 4 x MARK b
-| zz
-| x MARK c
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1 @p0:2:3 x MARK a
+| 2 @p0:4:3 x MARK b
+| 3 @p0:6:3 x MARK c
+| 4
|
|
|
@@ -184,21 +184,21 @@
|
|
|
-== snap back grid=140x30 cursor=74,3
+== snap back grid=140x30 cursor=4,3
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1 @p0:2:3 x MARK a
-| 2 @p0:4:3 x MARK b x MARK a
-| 3 @p0:6:3 x MARK c zz
-| 4 x MARK b
-| zz
-| x MARK c
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1 @p0:2:3 x MARK a
+| 2 @p0:4:3 x MARK b
+| 3 @p0:6:3 x MARK c
+| 4
|
|
|
@@ -215,18 +215,18 @@
|
|
|
-== snap nomatch grid=140x30 cursor=74,3
+== snap nomatch grid=140x30 cursor=4,3
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1
-| x MARK a
-| zz
-| x MARK b
-| zz
-| x MARK c
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1
|
|
|
@@ -246,18 +246,18 @@
|
|
|
-== snap ttyinert grid=140x30 cursor=74,8
+== snap ttyinert grid=140x30 cursor=4,8
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del TTY /tmp/pardes-snap/psearch/cwd Del
-| 1 $ printf 'x MA''RK a\nzz\nx MA''RK b\nzz\nx MA''RK c\n'
-| x MARK a
-| zz
-| x MARK b
-| zz
-| x MARK c
-| $
-|
-|
+| TTY /tmp/pardes-snap/psearch/cwd Del
+| $ printf 'x MA''RK a\nzz\nx MA''RK b\nzz\nx MA''RK c\n'
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
+| $
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1
|
|
|
@@ -277,21 +277,21 @@
|
|
|
-== snap rightsearch grid=140x30 cursor=74,3
+== snap rightsearch grid=140x30 cursor=4,3
|Kill Newcol Tutor Debug NextColor Dump
-| NOR /tmp/pardes-snap/psearch/cwd/+Search Del NOR /tmp/pardes-snap/psearch/cwd Del
-| 1 @p0:2:3 x MARK a
-| 2 @p0:4:3 x MARK b x MARK a
-| 3 @p0:6:3 x MARK c zz
-| 4 x MARK b
-| zz
-| x MARK c
-|
-|
-|
-|
+| NOR /tmp/pardes-snap/psearch/cwd Del
|
+| x MARK a
+| zz
+| x MARK b
+| zz
+| x MARK c
|
+| NOR /tmp/pardes-snap/psearch/cwd/+Search Del
+| 1 @p0:2:3 x MARK a
+| 2 @p0:4:3 x MARK b
+| 3 @p0:6:3 x MARK c
+| 4
|
|
|
diff --git a/test/snapshots/psearch.snap b/test/snapshots/psearch.snap
index 4c5e74d0..77ba294b 100644
--- a/test/snapshots/psearch.snap
+++ b/test/snapshots/psearch.snap
@@ -4,6 +4,12 @@
# behind it, so its tag has no Save — and point at `@p0:LINE`, the look target
# that names a live pane, since a terminal has no path. n/N walk the buffer
# and look each row, scrolling the terminal to that line of its scrollback.
+# PLACEMENT, and this script is the proof: an output buffer is NOT a document
+# — it is the result list of the pane that asked for it — so even here, with no
+# doc pane in the session for it to join, it does NOT take a column of its own.
+# It splits BELOW the shell it came from: every snap below stays ONE column,
+# the shell's tag and the +Search tag both starting at x=0, thirty rows split
+# between them, and nothing shifts sideways.
start 30 140
wait 8000 Kill Newcol
stable 700 20000
@@ -51,18 +57,20 @@ stable 400 5000
snap nomatch
# right-clicking a word that names no file is the same search (acme button 3),
# but NOT in tty mode: there the click belongs to the program on the other end,
-# so the buffer stays empty
+# so the buffer stays empty. Col 5 row 4 is the `M` of the first `x MARK a`,
+# in the shell's body in both modes (normal hides the prompt row, leaving it
+# blank, so the output rows sit at the same place either way).
key c-b
stable 600 8000
-press right 75 4
-release right 75 4
+press right 5 4
+release right 5 4
stable 700 10000
snap ttyinert
# back in normal mode the same click searches for MARK
key c-b
stable 600 8000
-press right 75 4
-release right 75 4
+press right 5 4
+release right 5 4
wait 10000 @p0:2:3
stable 700 15000
snap rightsearch