From 599dd82f96b9d091aae78300aa6c3fbc81f9eb69 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Sun, 9 Aug 2026 06:54:27 -0300 Subject: review pass: fix the eaten Tab, drop the duplicated code, cover the gaps --- test/snapshots/lspcomplete.golden | 2 +- test/snapshots/lspcomplete.snap | 49 ++--------- test/snapshots/lspcompletemoved.golden | 36 ++++++++ test/snapshots/lspcompletemoved.snap | 33 +++++++ test/snapshots/nested-optout.golden | 93 ++++++++++++++++++++ test/snapshots/nested-optout.snap | 52 +++++++++++ test/snapshots/tagalign2col.golden | 93 ++++++++++++++++++++ test/snapshots/tagalign2col.snap | 45 ++++++++++ test/snapshots/tagbottom.golden | 93 -------------------- test/snapshots/tagbottom.snap | 14 ++- test/snapshots/tagbottomimage.golden | 155 +++++++++++++++++++++++++++++++++ test/snapshots/tagbottomimage.snap | 52 +++++++++++ 12 files changed, 574 insertions(+), 143 deletions(-) create mode 100644 test/snapshots/lspcompletemoved.golden create mode 100644 test/snapshots/lspcompletemoved.snap create mode 100644 test/snapshots/nested-optout.golden create mode 100644 test/snapshots/nested-optout.snap create mode 100644 test/snapshots/tagalign2col.golden create mode 100644 test/snapshots/tagalign2col.snap create mode 100644 test/snapshots/tagbottomimage.golden create mode 100644 test/snapshots/tagbottomimage.snap (limited to 'test') diff --git a/test/snapshots/lspcomplete.golden b/test/snapshots/lspcomplete.golden index 5c92b71a..51c11c66 100644 --- a/test/snapshots/lspcomplete.golden +++ b/test/snapshots/lspcomplete.golden @@ -203,7 +203,7 @@ | /tmp/pardes-snap/lspcomplete/cwd/+Search New Del | 1 /tmp/pardes-snap/lspcomplete/cwd/a.zig:2:5-13 verdigris, | 2 /tmp/pardes-snap/lspcomplete/cwd/a.zig:3:5-12 cinnabar, -== snap twentytabs grid=120x40 cursor=16,9 +== snap refill grid=120x40 cursor=16,9 |New Newcol Find Grep Help Tutor Dump NextColor Debug Kill |^ /tmp/pardes-snap/lspcomplete/cwd/a.zig Save New Del | 1 const Shade = enum { diff --git a/test/snapshots/lspcomplete.snap b/test/snapshots/lspcomplete.snap index 7393b209..8b7854cd 100644 --- a/test/snapshots/lspcomplete.snap +++ b/test/snapshots/lspcomplete.snap @@ -66,52 +66,21 @@ key tab wait 15000 a.zig:2: stable 700 15000 snap completion -# Nineteen more Tabs. Every one of them answers, and every answer REFILLS the -# one `+Search` rather than opening its twin: before that fix six presses left -# six byte-identical panes, twenty left fifteen with the file crushed to a -# single visible line, and from the sixteenth on freeSlot returned null and the -# keystroke was eaten for the rest of the session with nothing said. The golden -# below is the assertion — one file pane, one results pane, same as after the -# first press. -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 -key tab -settle 150 +# Two more Tabs. Every one of them answers, and every answer REFILLS the one +# `+Search` rather than opening its twin. The SECOND press is already the whole +# assertion: without the refill it leaves a second byte-identical `+Search` and +# this golden diverges. What TWENTY do is only worse in degree — fifteen +# stacked panes, the file crushed to one visible line, and from the sixteenth +# on freeSlot returns null and the keystroke is eaten for the rest of the +# session — and that story lives in docs/lsp.md rather than in three seconds of +# every suite run. One file pane, one results pane, same as after the first. key tab settle 150 key tab settle 150 key tab stable 700 20000 -snap twentytabs +snap refill # The pane is still in insert mode, which is right — the query answered beside # the cursor and typing goes on — so walking the answer means leaving it first, # the same as for any other results buffer. diff --git a/test/snapshots/lspcompletemoved.golden b/test/snapshots/lspcompletemoved.golden new file mode 100644 index 00000000..bd23bfcd --- /dev/null +++ b/test/snapshots/lspcompletemoved.golden @@ -0,0 +1,36 @@ +== snap typedthrough grid=120x20 cursor=16,13 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +|^ /tmp/pardes-snap/lspcompletemoved/cwd/a.zig Save New Del +| 1 const Shade = enum { +| 2 verdigris, +| 3 cinnabar, +| 4 }; +| 5 +| 6 fn pick(s: Shade) u8 { +| 7 return switch (s) { +| 8 +| 9 }; +| 10 } +| 11 +| 12 // note.x see below +| 13 +| +| +| +| +| +== file buffer +const Shade = enum { + verdigris, + cinnabar, +}; + +fn pick(s: Shade) u8 { + return switch (s) { + + }; +} + +// note.x see below + +== end file diff --git a/test/snapshots/lspcompletemoved.snap b/test/snapshots/lspcompletemoved.snap new file mode 100644 index 00000000..5f20b806 --- /dev/null +++ b/test/snapshots/lspcompletemoved.snap @@ -0,0 +1,33 @@ +# The guard that makes "an empty answer indents" safe to have at all. +# +# lspcomplete.snap pins the indent itself: Tab after a dot the backend cannot +# answer diverts, the answer comes back empty, and four spaces go in LATE so +# the keystroke is not eaten. That late write is the dangerous half — it lands +# a few hundred milliseconds after the key, by which time the hands have moved +# on — so lspResponse only performs it if nothing has: same pane, still insert, +# one cursor, cursor still on the cell the Tab was pressed at. Nothing covered +# the condition, only its happy side. +# +# Same file and same click as lspcomplete's `commentindent` arm — line 12 is a +# comment, so no candidate can exist and the answer is certainly empty — but +# here an `x` is typed straight after the Tab, in the same write, long before a +# ZLS analysis can finish. The buffer below is the assertion: `// note.x`, with +# neither `// note. x` (the indent landing under the typing) nor +# `// note.x ` (the indent landing on top of it). +file a.zig const Shade = enum {\n verdigris,\n cinnabar,\n};\n\nfn pick(s: Shade) u8 {\n return switch (s) {\n \n };\n}\n\n// note. see below\n +start 20 120 a.zig +wait 8000 verdigris +stable 700 20000 +press left 16 14 +release left 16 14 +stable 400 5000 +key i +key tab +text x +stable 700 20000 +snap typedthrough +key esc +settle 100 +key space f s +stable 700 15000 +snapfile buffer /tmp/pardes-snap/lspcompletemoved/cwd/a.zig diff --git a/test/snapshots/nested-optout.golden b/test/snapshots/nested-optout.golden new file mode 100644 index 00000000..7fc443df --- /dev/null +++ b/test/snapshots/nested-optout.golden @@ -0,0 +1,93 @@ +== snap optout-file grid=100x30 cursor=9,4 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +|$ /tmp/pardes-snap/nested-optout/cwd New Del +| New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /tmp/pardes-snap/nested-optout/cwd/nested.txt Save New Del +| 1 optout-marker +| 2 second-optout-line +| 3 +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +== snap inner-shell grid=100x30 cursor=6,4 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +|$ /tmp/pardes-snap/nested-optout/cwd New Del +| New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| $ /tmp/pardes-snap/nested-optout/cwd/innerdir New Del +| $ +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +== snap inner-launch grid=100x30 cursor=11,6 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +|$ /tmp/pardes-snap/nested-optout/cwd New Del +| New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| $ /tmp/pardes-snap/nested-optout/cwd/innerdir New Del +| New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /tmp/pardes-snap/nested-optout/cwd/innerdir/deeper.txt Save New Del +| 1 deepest-marker +| 2 +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| diff --git a/test/snapshots/nested-optout.snap b/test/snapshots/nested-optout.snap new file mode 100644 index 00000000..27e1ba3d --- /dev/null +++ b/test/snapshots/nested-optout.snap @@ -0,0 +1,52 @@ +# `--nested` is the documented escape hatch out of the hand-the-file-outward +# mechanism, and nested.snap covers only the mechanism. The flag says two +# things at once and both are asserted here: an instance carrying it keeps its +# own argument instead of forwarding it, AND it is not an outer instance for +# anything launched inside IT (tty.zig binds no socket when opts.nested). +# +# The same trick nested.snap uses to get a genuine descendant: a pane shell's +# parent IS the app under test, so `$(readlink /proc/$PPID/exe)` in a pane is +# this exact binary. What discriminates is the GRID — a second topbar drawn +# INSIDE the pane, with the outer instance still one shell wide. +# +# Long waits on purpose: each arm forks and execs whole further pardes. +file nested.txt optout-marker\nsecond-optout-line\n +dirmk innerdir +file innerdir/deeper.txt deepest-marker\n +# --- a file argument, WITH the flag: the inner keeps it --- +# Without --nested this is nested.snap's first arm and the outer grows a +# file pane beside the shell. Here the outer's layout never changes: one +# shell, and a whole second pardes drawn inside it holding nested.txt. +start 30 100 +wait 8000 $ +stable 700 20000 +text $(readlink /proc/$PPID/exe) --nested nested.txt +key enter +wait 20000 optout-marker +stable 700 20000 +snap optout-file +# --- ...and it is not an outer instance either --- +# The subshell is what makes the wait unambiguous: the inner boots in +# `innerdir` while the outer pane's own shell stays in cwd, so `cwd/innerdir` +# on the grid can only be the inner instance's tagline. --nested with no +# argument is still a bare launch, so the inner comes up in tty mode and +# keystrokes travel through both layers to its shell. +start 30 100 +wait 8000 $ +stable 700 20000 +text (cd innerdir && $(readlink /proc/$PPID/exe) --nested) +key enter +wait 20000 cwd/innerdir +stable 700 20000 +snap inner-shell +# A third pardes, launched from inside the inner one. Its nearest pardes +# ancestor is the INNER instance, which bound no socket, so the send fails and +# it opens its own session where it stands — three topbars. The assertion is +# the row it did NOT appear on: the outer instance is still one shell pane, and +# a walk that had skipped past the opted-out instance would have put +# deeper.txt up there beside it. +text $(readlink /proc/$PPID/exe) deeper.txt +key enter +wait 20000 deepest-marker +stable 700 20000 +snap inner-launch diff --git a/test/snapshots/tagalign2col.golden b/test/snapshots/tagalign2col.golden new file mode 100644 index 00000000..d5d22935 --- /dev/null +++ b/test/snapshots/tagalign2col.golden @@ -0,0 +1,93 @@ +== snap onecol grid=160x30 cursor=7,2 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /tmp/pardes-snap/tagalign2col/cwd/deep/proj/document.txt Save New Del /tmp/pardes-snap/tagalign2col/cwd New Del +| 1 alpha +| 2 beta deep +| 3 gamma +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +== snap aligned grid=160x30 cursor=4,19 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /tmp/pardes-snap/tagalign2col/cwd/deep/proj/document.txt Save New Del /tmp/pardes-snap/tagalign2col/cwd New Del +| 1 alpha +| 2 beta deep +| 3 gamma +| +| +| +| +| +| +| +| +| +| +| +| /tmp/pardes-snap/tagalign2col/cwd New Del +| +| deep +| +| +| +| +| +| +| +| +| +| +| +== snap widened grid=160x30 cursor=4,19 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /tmp/pardes-snap/tagalign2col/cwd/deep/proj/document.txt Save New Del ╎ /tmp/pardes-snap/tagalign2col/cwd New Del +| 1 alpha ╎ +| 2 beta ╎ deep +| 3 gamma ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| /tmp/pardes-snap/tagalign2col/cwd New Del ╎ +| ╎ +| deep ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ +| ╎ diff --git a/test/snapshots/tagalign2col.snap b/test/snapshots/tagalign2col.snap new file mode 100644 index 00000000..02add6fd --- /dev/null +++ b/test/snapshots/tagalign2col.snap @@ -0,0 +1,45 @@ +# The shared tail-end is scoped to a LAYOUT COLUMN. tagalign.snap proves the +# sharing but only ever has one column, so nothing there would notice a vote +# that leaked sideways: every pane in the window would still line up, and the +# feature would look like it worked right up until you opened a second column. +# +# Here the long path is in the LEFT column (that is which side it lands on: +# `SPC c n` puts the NEW column on the right, so the boot file keeps the left) +# and the right column is a plain shell. Both columns are 80 wide, so both +# would end their words at tag_right_pad — 58 columns in — if nothing pushed. +dirmk deep +dirmk deep/proj +file deep/proj/document.txt alpha\nbeta\ngamma +start 30 160 deep/proj/document.txt +wait 8000 New Newcol +wait 8000 document.txt +stable 700 20000 +# `SPC c n`: a shell in a column of its own on the right. Two columns, one pane +# each. The file's own tag is 69 columns and so pushes past its column's pad; +# the shell on the right sits AT its pad, 58 in. Read the two ends off this +# snap — they are what the next one must not disturb. +key space c n +stable 700 15000 +key space w h +stable 400 5000 +snap onecol +# Alt-n: a second pane in the LEFT column. It is 41 columns of tag and would +# right-align at 58 on its own; the file above it drags it out to 69 instead. +# THE ASSERTION: the right column's `New Del` has not moved a cell — same +# absolute column as in `onecol`, still at its own pad — while the left +# column's two rows now agree with each other at 69. +key a-n +stable 700 15000 +snap aligned +# ...and the ends are computed per column, not once for the window. Drag the +# vertical border 20 columns right: the left column grows to 100 (tw-pad 78 is +# now past the file's 69, so its pad binds again and both left rows move OUT to +# 78) and the right column shrinks to 60 (tw-pad 38 is now short of the shell's +# own 41, so its words fall back hard against the path at 41). Two different +# rules firing in the same frame, one per column — a single window-wide end +# could not produce this grid at all. +press left 80 10 +drag left 100 10 +release left 100 10 +stable 700 15000 +snap widened diff --git a/test/snapshots/tagbottom.golden b/test/snapshots/tagbottom.golden index cc402fd1..27c6d42a 100644 --- a/test/snapshots/tagbottom.golden +++ b/test/snapshots/tagbottom.golden @@ -246,68 +246,6 @@ | | | /tmp/pardes-snap/tagbottom/cwd/bottom.txt Save New Del -== snap wheel-body grid=100x30 cursor=9,1 -|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill -| 5 eee -| 6 fff -| 7 ggg -| 8 hhh -| 9 iii -| 10 jjj -| 11 kkk -| 12 lll -| 13 mmm -| /tmp/pardes-snap/tagbottom/cwd/top.txt bottom.txt Save New Del -| 1 ZZONE -| 2 ZZTWO -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| /tmp/pardes-snap/tagbottom/cwd/bottom.txt Save New Del -== snap wheel-gutter grid=100x30 cursor=9,2 -|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill -| 4 ddd -| 5 eee -| 6 fff -| 7 ggg -| 8 hhh -| 9 iii -| 10 jjj -| 11 kkk -| 12 lll -| /tmp/pardes-snap/tagbottom/cwd/top.txt bottom.txt Save New Del -| 1 ZZONE -| 2 ZZTWO -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| /tmp/pardes-snap/tagbottom/cwd/bottom.txt Save New Del == snap gutter-click grid=100x30 cursor=9,4 |New Newcol Find Grep Help Tutor Dump NextColor Debug Kill | 2 bbb @@ -401,37 +339,6 @@ | | | /tmp/pardes-snap/tagbottom/cwd/bottom.txt Save New Del -== style sweep-down -|0: 0-56 #949494,#121212, 57-99 d,#121212, -|1: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-9 #bdbdbd,#080808, 10-99 d,#080808, -|2: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-9 #bdbdbd,#080808, 10-99 d,#080808, -|3: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|4: 0-0 d,#121212, 1-1 d,#080808, 2-6 #949494,#121212, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|5: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|6: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|7: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|8: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|9: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-7 #080808,#9399f9, 8-9 #bdbdbd,#080808, 10-99 d,#080808, -|10: 0-1 #ffffff,#626262, 2-90 #949494,#121212, 91-99 d,#121212, -|11: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-11 #bdbdbd,#080808, 12-99 d,#080808, -|12: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-11 #bdbdbd,#080808, 12-99 d,#080808, -|13: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|14: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|15: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|16: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|17: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|18: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|19: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|20: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|21: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|22: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|23: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|24: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|25: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|26: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|27: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|28: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|29: 0-1 #ffffff,#262626, 2-79 #949494,#121212, 80-99 d,#121212, == snap cut-down grid=100x30 cursor=7,4 |New Newcol Find Grep Help Tutor Dump NextColor Debug Kill | 1 aaa diff --git a/test/snapshots/tagbottom.snap b/test/snapshots/tagbottom.snap index 801df1a8..389e0c36 100644 --- a/test/snapshots/tagbottom.snap +++ b/test/snapshots/tagbottom.snap @@ -76,20 +76,17 @@ release left 40 12 motion 40 25 stable 500 8000 snap seam-dragged -# the wheel over the BODY of the upper pane (nine body rows now): four rows -# down, so the view starts at line 5 and the pinned cursor rides up to the -# pane's first row +# Scroll the upper pane's body down four rows and back up one, so the gutter +# click below has a scrolled view to count from. Not captured: the wheel arm of +# handleMouse is `hovered` plus scrollBy and contains no tag_bottom at all, and +# the body rendering under it is already pinned by `boot`, `on` and +# `body-cursor`. View ends at line 4. wheel down 40 4 wheel down 40 4 wheel down 40 4 wheel down 40 4 -stable 400 8000 -snap wheel-body -# ...and one row back up with the wheel over the GUTTER: the same pane, found -# through its gutter column. View at line 4. wheel up 1 4 stable 400 8000 -snap wheel-gutter # a left click in the gutter scrolls UP to the clicked row, and the row it # counts from is the BODY's first, not r.y + BOX_H. Row 4 is grid row 3, the # third body row: two rows up, to line 2. Counted from the wrong end it would @@ -129,7 +126,6 @@ stable 400 5000 press left 8 4 drag left 8 11 stable 400 5000 -snapstyle sweep-down # ...and the proof is the BUFFER, not the highlight: 1-2 Cut the sweep, save, # and read the file back. aaa/bbb/ccc survive and kkk..zzz survive; unclamped # this file lost bbb/ccc/ddd instead and kept eee onward. diff --git a/test/snapshots/tagbottomimage.golden b/test/snapshots/tagbottomimage.golden new file mode 100644 index 00000000..5508d01a --- /dev/null +++ b/test/snapshots/tagbottomimage.golden @@ -0,0 +1,155 @@ +== snap img-top grid=150x30 cursor=11,7 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| img /tmp/pardes-snap/tagbottomimage/cwd/pic.ppm New Del /tmp/pardes-snap/tagbottomimage/cwd New Del +| (f🬱]0V7R*%m🬶🬁G🬬tN#XR9q🬢tC#f/🬜_GR(🬞🬙tCRp$o*7^+[#H7s🬢YDZ🬝▟ +| iU)dSotT[r27T"\*Fh▐🬅g,🬰p🬛▙🬲&*3/9xy🬛▀0kCg▛🬱C,>C}PC06m🬝▟█ pic.ppm +| "S▄;$gs,Xa▟T🬔s▖┼W▘?by🬋🬭uCR3/A3🬶lO▖▞🬃🬘╳🬟#=🬺🬕yoaJ@>4🬝🬵 +| ─m!fAAD🬒jW>7JkR▄▜🬫🬞🬢FWx╲▟2ZT🬥/▖jteR?q🬶^🬅▀_@N─u4🬹🬝🬹 +| E72z🬧🬒oy🬧e▌ijY╲&🬅mbh╲h$🬘🬴PS9y▙0H🬳╲🬂&🬣╲,🬃,R;█AZ🬝▟ +| kz5zXa92Q▖` i6Ax🬝🬵 +| z[I🬮╲🬸&j;▟▛eY🬉L&u?🬫gc▝🬍5🬉Q🬪s2V🬗🬡🬝🬹█ +| XUq🬨[╱🬒Zb<"#.$1Zby╳Fk:y🬠🬷z\txn🬝▟ +| r🬗│G"🬵8🬘j=F🬐Z🬫@u▛╲r🬖$🬥%┼6f&>🬝🬹█ +| ~{🬫$blt🬘=dxu",🬣t🬣=y🬌H3>\🬎A🬝🬻 +| k🬴5L🬹🬢u>-!🬊Ga▟╱🬈D🬉╳wEZ'g🬎▄ +| y'5K%p?:╳🬤▘/fZ╳>jwbv0M🬝▟ +| %C🬢▄🬍▗I🬬G▄🬡w~Hp!#"Q▝▛▄█ +| 🬯[▜?To5@q🬗gmJ.w🬉~R🬝▟█ +| y🬗🬞+*X7eJ🬮`X}ZO🬟🬝▟█ +| ╱^🬷pc[a]juQ[🬷$🬝🬻 +| g6▗>🬌7O▞3🬤b─🬝▟ +| YVQ8Q╳NF🬝▐🬝🬹█ +| 🬯│@/]4%^🬆~█ +| eP🬗<┼A🬝🬹█ +| ▀(u🬬🬝▟ +| fc🬎🬹█ +| 🬝🬹 +== snap img-bottom grid=150x30 cursor=11,7 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| (f🬱]0V7R*%m🬶🬁G🬬tN#XR9q🬢tC#f/🬜_GR(🬞🬙tCRp$o*7^+[#H7s🬢YDZ🬝▟ +| iU)dSotT[r27T"\*Fh▐🬅g,🬰p🬛▙🬲&*3/9xy🬛▀0kCg▛🬱C,>C}PC06m🬝▟█ pic.ppm +| "S▄;$gs,Xa▟T🬔s▖┼W▘?by🬋🬭uCR3/A3🬶lO▖▞🬃🬘╳🬟#=🬺🬕yoaJ@>4🬝🬵 +| ─m!fAAD🬒jW>7JkR▄▜🬫🬞🬢FWx╲▟2ZT🬥/▖jteR?q🬶^🬅▀_@N─u4🬹🬝🬹 +| E72z🬧🬒oy🬧e▌ijY╲&🬅mbh╲h$🬘🬴PS9y▙0H🬳╲🬂&🬣╲,🬃,R;█AZ🬝▟ +| kz5zXa92Q▖` i6Ax🬝🬵 +| z[I🬮╲🬸&j;▟▛eY🬉L&u?🬫gc▝🬍5🬉Q🬪s2V🬗🬡🬝🬹█ +| XUq🬨[╱🬒Zb<"#.$1Zby╳Fk:y🬠🬷z\txn🬝▟ +| r🬗│G"🬵8🬘j=F🬐Z🬫@u▛╲r🬖$🬥%┼6f&>🬝🬹█ +| ~{🬫$blt🬘=dxu",🬣t🬣=y🬌H3>\🬎A🬝🬻 +| k🬴5L🬹🬢u>-!🬊Ga▟╱🬈D🬉╳wEZ'g🬎▄ +| y'5K%p?:╳🬤▘/fZ╳>jwbv0M🬝▟ +| %C🬢▄🬍▗I🬬G▄🬡w~Hp!#"Q▝▛▄█ +| 🬯[▜?To5@q🬗gmJ.w🬉~R🬝▟█ +| y🬗🬞+*X7eJ🬮`X}ZO🬟🬝▟█ +| ╱^🬷pc[a]juQ[🬷$🬝🬻 +| g6▗>🬌7O▞3🬤b─🬝▟ +| YVQ8Q╳NF🬝▐🬝🬹█ +| 🬯│@/]4%^🬆~█ +| eP🬗<┼A🬝🬹█ +| ▀(u🬬🬝▟ +| fc🬎🬹█ +| 🬝🬹 +| img /tmp/pardes-snap/tagbottomimage/cwd/pic.ppm New Del /tmp/pardes-snap/tagbottomimage/cwd New Del +== style img-bottom +|0: 0-56 #949494,#121212, 57-149 d,#121212, +|1: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-11 #6c6c6c,#959595, 12-12 #959595,#6c6c6c, 13-13 #6c6c6c,#959595, 14-24 #959595,#6c6c6c, 25-27 #6c6c6c,#959595, 28-28 #959595,#6c6c6c, 29-30 #6c6c6c,#959595, 31-32 #959595,#6c6c6c, 33-34 #6c6c6c,#959595, 35-35 #959595,#6c6c6c, 36-37 #6c6c6c,#959595, 38-39 #959595,#6c6c6c, 40-40 #6c6c6c,#959595, 41-41 #959595,#6c6c6c, 42-42 #6c6c6c,#959595, 43-44 #959595,#6c6c6c, 45-47 #6c6c6c,#959595, 48-50 #959595,#6c6c6c, 51-51 #6c6c6c,#959595, 52-52 #959595,#6c6c6c, 53-53 #6c6c6c,#959595, 54-63 #959595,#6c6c6c, 64-64 #959595,#352879, 65-65 #352879,#6c6c6c, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|2: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-12 #6c6c6c,#959595, 13-13 #959595,#6c6c6c, 14-15 #6c6c6c,#959595, 16-18 #959595,#6c6c6c, 19-19 #6c6c6c,#959595, 20-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-32 #959595,#6c6c6c, 33-33 #6c6c6c,#959595, 34-37 #959595,#6c6c6c, 38-39 #6c6c6c,#959595, 40-44 #959595,#6c6c6c, 45-45 #6c6c6c,#959595, 46-47 #959595,#6c6c6c, 48-48 #6c6c6c,#959595, 49-52 #959595,#6c6c6c, 53-53 #444444,#959595, 54-54 #959595,#6c6c6c, 55-55 #6c6c6c,#959595, 56-58 #959595,#6c6c6c, 59-59 #6c6c6c,#959595, 60-60 #959595,#6c6c6c, 61-61 #6c6c6c,#959595, 62-62 #959595,#352879, 63-63 #352879,#959595, 64-64 #352879,#6c5eb5, 65-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|3: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-13 #959595,#6c6c6c, 14-16 #6c6c6c,#959595, 17-17 #444444,#959595, 18-22 #959595,#6c6c6c, 23-23 #6c6c6c,#959595, 24-26 #959595,#6c6c6c, 27-27 #6c6c6c,#959595, 28-28 #959595,#6c6c6c, 29-30 #6c6c6c,#959595, 31-32 #959595,#6c6c6c, 33-33 #6c6c6c,#959595, 34-35 #959595,#6c6c6c, 36-36 #6c6c6c,#959595, 37-37 #444444,#959595, 38-38 #959595,#6c6c6c, 39-39 #6c6c6c,#959595, 40-43 #959595,#6c6c6c, 44-44 #6c6c6c,#959595, 45-48 #959595,#6c6c6c, 49-51 #6c6c6c,#959595, 52-52 #959595,#6c6c6c, 53-53 #6c6c6c,#959595, 54-55 #959595,#6c6c6c, 56-58 #6c6c6c,#959595, 59-59 #959595,#6c6c6c, 60-60 #6c6c6c,#352879, 61-61 #352879,#6c5eb5, 62-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|4: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-11 #6c6c6c,#959595, 12-17 #959595,#6c6c6c, 18-18 #6c6c6c,#959595, 19-19 #959595,#6c6c6c, 20-22 #6c6c6c,#959595, 23-26 #959595,#6c6c6c, 27-27 #6c6c6c,#959595, 28-29 #959595,#6c6c6c, 30-33 #6c6c6c,#959595, 34-35 #959595,#6c6c6c, 36-37 #6c6c6c,#959595, 38-40 #959595,#6c6c6c, 41-41 #6c6c6c,#959595, 42-42 #959595,#6c6c6c, 43-43 #6c6c6c,#959595, 44-44 #959595,#6c6c6c, 45-46 #6c6c6c,#959595, 47-47 #959595,#6c6c6c, 48-48 #6c6c6c,#959595, 49-49 #959595,#6c6c6c, 50-50 #6c6c6c,#959595, 51-51 #444444,#959595, 52-56 #959595,#6c6c6c, 57-57 #6c6c6c,#959595, 58-58 #959595,#352879, 59-59 #352879,#959595, 60-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|5: 0-0 d,#121212, 1-9 d,#080808, 10-11 #959595,#6c6c6c, 12-13 #6c6c6c,#959595, 14-16 #959595,#6c6c6c, 17-17 #6c6c6c,#959595, 18-19 #959595,#6c6c6c, 20-20 #6c6c6c,#959595, 21-21 #959595,#6c6c6c, 22-22 #6c6c6c,#959595, 23-24 #959595,#6c6c6c, 25-25 #6c6c6c,#959595, 26-27 #959595,#6c6c6c, 28-32 #6c6c6c,#959595, 33-40 #959595,#6c6c6c, 41-41 #6c6c6c,#959595, 42-53 #959595,#6c6c6c, 54-54 #6c6c6c,#959595, 55-55 #959595,#6c6c6c, 56-56 #959595,#352879, 57-57 #352879,#6c6c6c, 58-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|6: 0-0 d,#121212, 1-9 d,#080808, 10-13 #6c6c6c,#959595, 14-15 #959595,#6c6c6c, 16-16 #6c6c6c,#959595, 17-18 #959595,#6c6c6c, 19-19 #6c6c6c,#959595, 20-23 #959595,#6c6c6c, 24-24 #6c6c6c,#959595, 25-26 #959595,#6c6c6c, 27-28 #6c6c6c,#959595, 29-30 #959595,#6c6c6c, 31-31 #6c6c6c,#959595, 32-35 #959595,#6c6c6c, 36-38 #6c6c6c,#959595, 39-40 #959595,#6c6c6c, 41-41 #6c6c6c,#959595, 42-42 #959595,#6c6c6c, 43-43 #6c6c6c,#959595, 44-48 #959595,#6c6c6c, 49-49 #444444,#959595, 50-50 #959595,#6c6c6c, 51-51 #6c6c6c,#959595, 52-53 #959595,#6c6c6c, 54-54 #959595,#352879, 55-55 #352879,#444444, 56-56 #352879,#6c5eb5, 57-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-85 #bdbdbd,#080808, 86-149 d,#080808, +|7: 0-0 d,#121212, 1-9 d,#080808, 10-15 #959595,#6c6c6c, 16-21 #6c6c6c,#959595, 22-25 #959595,#6c6c6c, 26-26 #6c6c6c,#959595, 27-29 #959595,#6c6c6c, 30-30 #6c6c6c,#959595, 31-31 #959595,#6c6c6c, 32-34 #6c6c6c,#959595, 35-38 #959595,#6c6c6c, 39-39 #6c6c6c,#959595, 40-45 #959595,#6c6c6c, 46-48 #6c6c6c,#959595, 49-49 #959595,#6c6c6c, 50-51 #6c6c6c,#959595, 52-52 #6c6c6c,#352879, 53-53 #352879,#6c6c6c, 54-54 #352879,#6c5eb5, 55-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|8: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-11 #6c6c6c,#959595, 12-13 #959595,#6c6c6c, 14-14 #6c6c6c,#959595, 15-15 #959595,#6c6c6c, 16-16 #6c6c6c,#959595, 17-17 #959595,#6c6c6c, 18-20 #6c6c6c,#959595, 21-24 #959595,#6c6c6c, 25-25 #6c6c6c,#959595, 26-26 #959595,#6c6c6c, 27-27 #6c6c6c,#959595, 28-28 #959595,#6c6c6c, 29-29 #6c6c6c,#959595, 30-34 #959595,#6c6c6c, 35-35 #6c6c6c,#959595, 36-36 #959595,#6c6c6c, 37-37 #6c6c6c,#959595, 38-40 #959595,#6c6c6c, 41-41 #6c6c6c,#959595, 42-42 #959595,#6c6c6c, 43-43 #444444,#959595, 44-44 #959595,#6c6c6c, 45-45 #6c6c6c,#959595, 46-46 #959595,#6c6c6c, 47-47 #444444,#959595, 48-48 #6c6c6c,#959595, 49-49 #959595,#6c6c6c, 50-50 #6c6c6c,#352879, 51-51 #352879,#6c5eb5, 52-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|9: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-13 #959595,#6c6c6c, 14-14 #6c6c6c,#959595, 15-15 #959595,#6c6c6c, 16-16 #6c6c6c,#959595, 17-18 #959595,#6c6c6c, 19-19 #6c6c6c,#959595, 20-20 #444444,#959595, 21-24 #959595,#6c6c6c, 25-25 #6c6c6c,#959595, 26-26 #959595,#6c6c6c, 27-30 #6c6c6c,#959595, 31-35 #959595,#6c6c6c, 36-37 #6c6c6c,#959595, 38-38 #959595,#6c6c6c, 39-40 #6c6c6c,#959595, 41-44 #959595,#6c6c6c, 45-45 #6c6c6c,#959595, 46-47 #959595,#6c6c6c, 48-49 #959595,#352879, 50-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|10: 0-0 d,#121212, 1-9 d,#080808, 10-13 #959595,#6c6c6c, 14-14 #6c6c6c,#959595, 15-17 #959595,#6c6c6c, 18-18 #6c6c6c,#959595, 19-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-23 #959595,#6c6c6c, 24-24 #6c6c6c,#959595, 25-30 #959595,#6c6c6c, 31-34 #6c6c6c,#959595, 35-36 #959595,#6c6c6c, 37-37 #6c6c6c,#959595, 38-38 #959595,#6c6c6c, 39-40 #6c6c6c,#959595, 41-41 #444444,#959595, 42-42 #959595,#6c6c6c, 43-45 #6c6c6c,#959595, 46-46 #6c6c6c,#352879, 47-47 #352879,#6c6c6c, 48-48 #352879,#6c5eb5, 49-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|11: 0-0 d,#121212, 1-9 d,#080808, 10-11 #6c6c6c,#959595, 12-13 #959595,#6c6c6c, 14-15 #6c6c6c,#959595, 16-16 #959595,#6c6c6c, 17-20 #6c6c6c,#959595, 21-21 #959595,#6c6c6c, 22-22 #6c6c6c,#959595, 23-23 #959595,#6c6c6c, 24-24 #6c6c6c,#959595, 25-25 #959595,#6c6c6c, 26-26 #6c6c6c,#959595, 27-28 #959595,#6c6c6c, 29-29 #6c6c6c,#959595, 30-31 #959595,#6c6c6c, 32-33 #6c6c6c,#959595, 34-35 #959595,#6c6c6c, 36-36 #6c6c6c,#959595, 37-38 #959595,#6c6c6c, 39-39 #444444,#6c6c6c, 40-40 #6c6c6c,#959595, 41-41 #959595,#6c6c6c, 42-42 #6c6c6c,#959595, 43-43 #959595,#6c6c6c, 44-44 #959595,#352879, 45-45 #352879,#6c5eb5, 46-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|12: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-13 #959595,#6c6c6c, 14-14 #444444,#6c6c6c, 15-24 #959595,#6c6c6c, 25-25 #6c6c6c,#959595, 26-31 #959595,#6c6c6c, 32-39 #6c6c6c,#959595, 40-41 #959595,#6c6c6c, 42-42 #6c6c6c,#352879, 43-43 #352879,#959595, 44-44 #352879,#6c5eb5, 45-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|13: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-11 #6c6c6c,#959595, 12-16 #959595,#6c6c6c, 17-17 #6c6c6c,#959595, 18-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-23 #959595,#6c6c6c, 24-27 #6c6c6c,#959595, 28-29 #959595,#6c6c6c, 30-30 #6c6c6c,#959595, 31-31 #959595,#6c6c6c, 32-32 #6c6c6c,#959595, 33-35 #959595,#6c6c6c, 36-38 #6c6c6c,#959595, 39-39 #959595,#6c6c6c, 40-40 #6c6c6c,#352879, 41-41 #352879,#6c6c6c, 42-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|14: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-15 #959595,#6c6c6c, 16-16 #6c6c6c,#959595, 17-21 #959595,#6c6c6c, 22-22 #6c6c6c,#959595, 23-23 #959595,#6c6c6c, 24-25 #6c6c6c,#959595, 26-26 #959595,#6c6c6c, 27-27 #444444,#959595, 28-29 #6c6c6c,#959595, 30-32 #959595,#6c6c6c, 33-33 #6c6c6c,#959595, 34-34 #959595,#6c6c6c, 35-35 #6c6c6c,#959595, 36-36 #959595,#6c6c6c, 37-37 #6c6c6c,#959595, 38-38 #6c6c6c,#352879, 39-39 #352879,#959595, 40-40 #352879,#6c5eb5, 41-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|15: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-13 #959595,#6c6c6c, 14-14 #6c6c6c,#959595, 15-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-24 #959595,#6c6c6c, 25-25 #6c6c6c,#959595, 26-27 #959595,#6c6c6c, 28-29 #6c6c6c,#959595, 30-31 #959595,#6c6c6c, 32-32 #6c6c6c,#959595, 33-33 #959595,#6c6c6c, 34-34 #6c6c6c,#959595, 35-35 #959595,#6c6c6c, 36-36 #6c6c6c,#352879, 37-37 #352879,#959595, 38-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|16: 0-0 d,#121212, 1-9 d,#080808, 10-11 #959595,#6c6c6c, 12-12 #6c6c6c,#959595, 13-15 #959595,#6c6c6c, 16-16 #6c6c6c,#959595, 17-17 #959595,#6c6c6c, 18-19 #6c6c6c,#959595, 20-21 #959595,#6c6c6c, 22-22 #6c6c6c,#959595, 23-29 #959595,#6c6c6c, 30-31 #6c6c6c,#959595, 32-32 #959595,#6c6c6c, 33-33 #6c6c6c,#959595, 34-34 #959595,#352879, 35-35 #352879,#6c5eb5, 36-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|17: 0-0 d,#121212, 1-9 d,#080808, 10-12 #959595,#6c6c6c, 13-15 #6c6c6c,#959595, 16-16 #959595,#6c6c6c, 17-17 #444444,#959595, 18-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-22 #959595,#6c6c6c, 23-23 #6c6c6c,#959595, 24-27 #959595,#6c6c6c, 28-28 #6c6c6c,#959595, 29-31 #959595,#6c6c6c, 32-32 #6c6c6c,#352879, 33-33 #352879,#6c6c6c, 34-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|18: 0-0 d,#121212, 1-9 d,#080808, 10-16 #959595,#6c6c6c, 17-17 #6c6c6c,#959595, 18-18 #959595,#6c6c6c, 19-19 #6c6c6c,#959595, 20-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-23 #959595,#6c6c6c, 24-26 #6c6c6c,#959595, 27-27 #959595,#6c6c6c, 28-28 #6c6c6c,#959595, 29-29 #959595,#6c6c6c, 30-30 #959595,#352879, 31-32 #352879,#6c5eb5, 33-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|19: 0-0 d,#121212, 1-9 d,#080808, 10-11 #959595,#6c6c6c, 12-12 #6c6c6c,#959595, 13-15 #959595,#6c6c6c, 16-17 #6c6c6c,#959595, 18-19 #959595,#6c6c6c, 20-21 #6c6c6c,#959595, 22-22 #959595,#6c6c6c, 23-24 #6c6c6c,#959595, 25-26 #959595,#6c6c6c, 27-27 #6c6c6c,#959595, 28-28 #6c6c6c,#352879, 29-29 #352879,#6c6c6c, 30-30 #352879,#6c5eb5, 31-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|20: 0-0 d,#121212, 1-9 d,#080808, 10-14 #959595,#6c6c6c, 15-15 #6c6c6c,#959595, 16-17 #959595,#6c6c6c, 18-18 #6c6c6c,#959595, 19-19 #959595,#6c6c6c, 20-20 #6c6c6c,#959595, 21-21 #959595,#6c6c6c, 22-22 #6c6c6c,#959595, 23-25 #959595,#6c6c6c, 26-26 #6c6c6c,#352879, 27-27 #352879,#6c6c6c, 28-28 #352879,#6c5eb5, 29-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|21: 0-0 d,#121212, 1-9 d,#080808, 10-12 #6c6c6c,#959595, 13-14 #959595,#6c6c6c, 15-16 #6c6c6c,#959595, 17-20 #959595,#6c6c6c, 21-21 #6c6c6c,#959595, 22-22 #959595,#6c6c6c, 23-23 #6c6c6c,#959595, 24-24 #6c6c6c,#352879, 25-25 #352879,#959595, 26-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|22: 0-0 d,#121212, 1-9 d,#080808, 10-10 #959595,#6c6c6c, 11-11 #6c6c6c,#959595, 12-21 #959595,#6c6c6c, 22-22 #6c6c6c,#352879, 23-23 #352879,#6c6c6c, 24-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|23: 0-0 d,#121212, 1-9 d,#080808, 10-11 #6c6c6c,#959595, 12-13 #959595,#6c6c6c, 14-14 #6c6c6c,#959595, 15-15 #959595,#6c6c6c, 16-17 #6c6c6c,#959595, 18-19 #959595,#6c6c6c, 20-20 #6c6c6c,#352879, 21-21 #352879,#959595, 22-22 #352879,#6c5eb5, 23-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|24: 0-0 d,#121212, 1-9 d,#080808, 10-11 #959595,#6c6c6c, 12-13 #6c6c6c,#959595, 14-16 #959595,#6c6c6c, 17-17 #6c6c6c,#959595, 18-19 #959595,#352879, 20-20 #352879,#6c5eb5, 21-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|25: 0-0 d,#121212, 1-9 d,#080808, 10-11 #6c6c6c,#959595, 12-15 #959595,#6c6c6c, 16-16 #959595,#352879, 17-17 #352879,#6c6c6c, 18-18 #352879,#6c5eb5, 19-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|26: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#959595, 11-12 #959595,#6c6c6c, 13-13 #959595,#444444, 14-14 #6c6c6c,#352879, 15-15 #352879,#959595, 16-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|27: 0-0 d,#121212, 1-9 d,#080808, 10-11 #6c6c6c,#959595, 12-12 #6c6c6c,#352879, 13-13 #352879,#6c6c6c, 14-14 #352879,#6c5eb5, 15-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|28: 0-0 d,#121212, 1-9 d,#080808, 10-10 #6c6c6c,#352879, 11-11 #352879,#6c6c6c, 12-65 #352879,#352879, 66-74 d,#080808, 75-75 d,#444444, 76-76 d,#080808, 77-149 #bdbdbd,#080808, +|29: 0-1 #ffffff,#626262, 2-56 #949494,#121212, 57-74 d,#121212, 75-76 #ffffff,#262626, 77-129 #949494,#121212, 130-149 d,#121212, +== snap search-prompt grid=150x30 cursor=6,1 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| /ZZ +| iU)dSotT[r27T"\*Fh▐🬅g,🬰p🬛▙🬲&*3/9xy🬛▀0kCg▛🬱C,>C}PC06m🬝▟█ pic.ppm +| "S▄;$gs,Xa▟T🬔s▖┼W▘?by🬋🬭uCR3/A3🬶lO▖▞🬃🬘╳🬟#=🬺🬕yoaJ@>4🬝🬵 +| ─m!fAAD🬒jW>7JkR▄▜🬫🬞🬢FWx╲▟2ZT🬥/▖jteR?q🬶^🬅▀_@N─u4🬹🬝🬹 +| E72z🬧🬒oy🬧e▌ijY╲&🬅mbh╲h$🬘🬴PS9y▙0H🬳╲🬂&🬣╲,🬃,R;█AZ🬝▟ +| kz5zXa92Q▖` i6Ax🬝🬵 +| z[I🬮╲🬸&j;▟▛eY🬉L&u?🬫gc▝🬍5🬉Q🬪s2V🬗🬡🬝🬹█ +| XUq🬨[╱🬒Zb<"#.$1Zby╳Fk:y🬠🬷z\txn🬝▟ +| r🬗│G"🬵8🬘j=F🬐Z🬫@u▛╲r🬖$🬥%┼6f&>🬝🬹█ +| ~{🬫$blt🬘=dxu",🬣t🬣=y🬌H3>\🬎A🬝🬻 +| k🬴5L🬹🬢u>-!🬊Ga▟╱🬈D🬉╳wEZ'g🬎▄ +| y'5K%p?:╳🬤▘/fZ╳>jwbv0M🬝▟ +| %C🬢▄🬍▗I🬬G▄🬡w~Hp!#"Q▝▛▄█ +| 🬯[▜?To5@q🬗gmJ.w🬉~R🬝▟█ +| y🬗🬞+*X7eJ🬮`X}ZO🬟🬝▟█ +| ╱^🬷pc[a]juQ[🬷$🬝🬻 +| g6▗>🬌7O▞3🬤b─🬝▟ +| YVQ8Q╳NF🬝▐🬝🬹█ +| 🬯│@/]4%^🬆~█ +| eP🬗<┼A🬝🬹█ +| ▀(u🬬🬝▟ +| fc🬎🬹█ +| 🬝🬹 +| img /tmp/pardes-snap/tagbottomimage/cwd/pic.ppm New Del /tmp/pardes-snap/tagbottomimage/cwd New Del +== snap del-image grid=150x30 cursor=5,6 +|New Newcol Find Grep Help Tutor Dump NextColor Debug Kill +| +| pic.ppm +| +| +| +| pic.ppm +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| /tmp/pardes-snap/tagbottomimage/cwd New Del diff --git a/test/snapshots/tagbottomimage.snap b/test/snapshots/tagbottomimage.snap new file mode 100644 index 00000000..e46e19ba --- /dev/null +++ b/test/snapshots/tagbottomimage.snap @@ -0,0 +1,52 @@ +# Tagbottom against the one pane kind whose renderPane RETURNS EARLY. An image +# draws no body rows and no tagline of its own — the tag comes from the outer +# loop and so does the transient message row — so it is exactly the pane where +# "the tag moved" and "the message row moved with it" can come apart. Nothing +# in tagbottom.snap touches one. +ppmdiag pic.ppm +start 30 150 -n 1 +wait 8000 New Newcol +stable 700 20000 +# open it the way images.snap does: type the name into the shell pane's own +# text and right-click it. The image lands in a column of its own on the left. +press left 5 8 +release left 5 8 +stable 400 5000 +key i +text pic.ppm +key esc +settle 100 +press right 6 8 +release right 6 8 +wait 10000 img +stable 700 20000 +snap img-top +# SPC t b: the tag leaves row 1 for row 29 and the glyph art slides up into the +# row it left. The style capture is the half a text grid cannot see — the +# tagline's chrome colours have to travel with it, and a tag row drawn in the +# palette of the cell art under it would read as part of the picture. +key space t b +stable 700 15000 +snap img-bottom +snapstyle img-bottom +# `/` on an image pane. There is no text to search, and that is the point: the +# prompt is drawn by the message-row pass, which runs OUTSIDE renderPane +# precisely so an early-returning pane still gets one. With Tagbottom it lands +# on the pane's FIRST row (grid 1), the end away from the tag — over the top +# row of the art, not over the tagline that is now beneath it. +key / +send ZZ +stable 600 8000 +stable 400 5000 +snap search-prompt +key esc +settle 100 +stable 400 5000 +# ...and EXECUTE `Del` on that bottom tagline, which is the assertion the +# pixels cannot make: the middle click has to map row 29 to the image pane's +# TAG row rather than to a body row it has no body for. The image pane goes +# away entirely and the shell takes the whole window back. +press middle 56 30 +release middle 56 30 +stable 700 15000 +snap del-image -- cgit v1.3