From cdf4cbbf1fdd121aabdbbea33f11d5ee44d7764e Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 04:53:03 -0300 Subject: A look written back from an event sets what look reads back A look an event reader wrote back ran, but /look still read the last look made through it. It now answers the pane the written-back look found, as a look written there would. Co-Authored-By: Claude Opus 5.5 --- src/ninep/events.zig | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ninep/events.zig b/src/ninep/events.zig index d75c399b..a3f8c278 100644 --- a/src/ninep/events.zig +++ b/src/ninep/events.zig @@ -622,7 +622,17 @@ pub fn writeEvent(p: *Pardes, req: Req, id: usize) Reply { }; }, .tag_exec => _ = exec.execute(p, live, text), - .body_look, .tag_look => look.lookAt(p, live, text), + // What it found is what the look file reads back next, as a + // look written there would leave (ctl.run). + .body_look, .tag_look => { + p.look_missed = false; + look.lookAt(p, live, text); + p.fs.results_len = 0; + if (!p.look_missed) if (p.panes[p.active]) |found| { + p.fs.results[0] = found.serial; + p.fs.results_len = 1; + }; + }, else => unreachable, } } @@ -839,6 +849,10 @@ test "writing an event record back performs the action it names" { try testing.expectEqual(E.INVAL, wr(p, event, bad).errno()); try testing.expectEqual(@as(usize, 0), pane.msg_len); } + // A look written back sets what look reads back. + _ = wr(p, event, "FL0 3\n"); + var want_serial: [16]u8 = undefined; + try testing.expectEqualStrings(try std.fmt.bufPrint(&want_serial, "{d}\n", .{serial}), rd(p, @intFromEnum(tree.TopFile.look), 0, 64).bytes); // Well formed but past the text: said so, not "bad event syntax". try testing.expectEqualStrings("range past end of body", wr(p, event, "MX0 999\n").reply.ename); -- cgit v1.3