summaryrefslogtreecommitdiff
path: root/src/pardes.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 02:20:43 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commiteece0fbe709142f6731b7dd2e84009c3a18a3806 (patch)
treeefb4ae067a9009beae607c55ae38078382c5d038 /src/pardes.zig
parenta4a8b1874d477498fb427f8e2f63382c99f618a0 (diff)
downloadpardes-eece0fbe709142f6731b7dd2e84009c3a18a3806.tar.gz
pardes-eece0fbe709142f6731b7dd2e84009c3a18a3806.zip
A pane closed with its question standing logs answer <serial> -
A follower that saw ask never heard the question end when its pane closed first. Retiring a pane with a question still up now logs answer <serial> - before its del. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/pardes.zig')
-rw-r--r--src/pardes.zig11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/pardes.zig b/src/pardes.zig
index da9889ff..f55654b6 100644
--- a/src/pardes.zig
+++ b/src/pardes.zig
@@ -7096,6 +7096,17 @@ test "Del from a key asks which neighbour takes the rows; nothing else asks" {
try std.testing.expectEqual(ctlfs.Status.ok, th.wr(p, ctl, "answer -\n").reply.status);
try std.testing.expect(p.panes[asked] != null and p.panes[asked].?.prompt == .none);
try std.testing.expect(th.logHas(p, try std.fmt.bufPrint(&want, "answer {d} -\n", .{serial})));
+ // A pane closed while its question stands ends the question in the log.
+ p.newScratchBelow(top);
+ const closing = p.active;
+ p.sync();
+ const closing_serial = p.panes[closing].?.serial;
+ p.update(.{ .key = .{ .cp = ' ' } });
+ p.update(.{ .key = .{ .cp = 'd' } });
+ try std.testing.expectEqual(Pane.Prompt.del_side, p.panes[closing].?.prompt);
+ try p.removePane(closing, null);
+ try std.testing.expect(th.logHas(p, try std.fmt.bufPrint(&want, "answer {d} -\ndel {d}", .{ closing_serial, closing_serial })));
+ p.active = asked;
p.update(.{ .key = .{ .cp = ' ' } });
p.update(.{ .key = .{ .cp = 'd' } });
try std.testing.expectEqual(ctlfs.Status.ok, th.wr(p, ctl, "answer k\n").reply.status);