From 6877a61ef40ad0d8e762a28d0a3f5fa9bfefaff2 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 27 Jul 2026 10:52:32 -0300 Subject: 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. --- test/snapshots/psearch.snap | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'test/snapshots/psearch.snap') 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 -- cgit v1.3