From 8496759196e88e4fbd25ce19d3b04722c8f25f64 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 16:29:20 -0300 Subject: A bad command inside an Edit block written whole is named, not the } after it A command in a { block that failed to parse ended the block there, so its } was taken as a control message of its own and the write failed unknown control message "}". A { block not yet closed now runs to its } whatever fails to parse in it, and the error names the command (Edit: unknown command z), as the line-by-line path does. Co-Authored-By: Claude Opus 5.5 --- src/ninep/ctl.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/ninep') diff --git a/src/ninep/ctl.zig b/src/ninep/ctl.zig index 63e7e76a..9d7557e6 100644 --- a/src/ninep/ctl.zig +++ b/src/ninep/ctl.zig @@ -3030,3 +3030,13 @@ test "@p:
takes any address over the terminal's lines, select try testing.expectEqual(row_before, pane.body.cur_row); try testing.expectEqualStrings("", rd(p, root, 0, 64).bytes); } + +test "a bad command inside an Edit block written whole is named, not the } after it" { + const p = try withFile(testing.allocator, "abc\n"); + defer p.deinit(); + const r = wr(p, Node.of(serialOf(p), .ctl), "Edit {\n,s/a/b/\nzq\n}\n"); + try testing.expectEqual(Status.err, r.reply.status); + try testing.expect(std.mem.indexOf(u8, r.reply.ename, "\"}\"") == null); + try testing.expect(std.mem.indexOf(u8, r.reply.ename, "z") != null); + try testing.expectEqualStrings("abc\n", p.panes[0].?.file.?.content); +} -- cgit v1.3