diff options
| author | Gabriel Schneider <[email protected]> | 2026-10-01 20:47:13 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 20:50:11 -0300 |
| commit | 4bdeee602d1e642582ce91fdbd0da210797894e9 (patch) | |
| tree | 0fda809a61bdd8271a2c90b9632fb25de3122e72 /src/look.zig | |
| parent | e1550ca15093e8190c3bf9a9809e0c78b7541ac9 (diff) | |
| download | pardes-4bdeee602d1e642582ce91fdbd0da210797894e9.tar.gz pardes-4bdeee602d1e642582ce91fdbd0da210797894e9.zip | |
An exec written back to event on a diff line (MX0 0) takes the word there, a header's, a hunk header's or the marker's, never the address; only a look takes it
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/look.zig')
| -rw-r--r-- | src/look.zig | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/look.zig b/src/look.zig index 3d02802a..030aa432 100644 --- a/src/look.zig +++ b/src/look.zig @@ -2428,7 +2428,7 @@ test "a click, a 9P whole-line look and an empty event write-back take one expan // An empty record written back to event, at the same byte. const body = pane.file.?.content; const line_start = modal.lineStartOffset(body, at.row); - const written = pardes.ctlfs.events.expandAt(p, pane, body, line_start + at.col, true); + const written = pardes.ctlfs.events.expandAt(p, pane, body, line_start + at.col, true, true); try std.testing.expectEqualStrings(at.want, written); // A 9P look of the whole line. if (at.whole_line) { @@ -2518,7 +2518,7 @@ test "every entry point to Look takes one expansion: a diff line and a file:12:5 }, .event_write_back => { const body = pane.file.?.content; - const text = pardes.ctlfs.events.expandAt(p, pane, body, modal.lineStartOffset(body, case.row) + case.col, true); + const text = pardes.ctlfs.events.expandAt(p, pane, body, modal.lineStartOffset(body, case.row) + case.col, true, true); lookAt(p, 0, p.scratch.allocator().dupe(u8, text) catch unreachable); }, } @@ -2563,6 +2563,15 @@ test "a tag word looked at by a click and by Enter is one record to an event rea pane.body.cur_col = 0; try std.testing.expectEqualStrings("+line", exec.operandAt(p, pane, cursorWordSel(p, pane), false, false).text.?); try std.testing.expectEqualStrings("src/x.zig:1", exec.operandAt(p, pane, cursorWordSel(p, pane), false, true).text.?); + // An exec written back to event (`MX0 0`) takes the word too, on a + // header, a hunk header and a marker column; a look, the address. + const body = pane.file.?.content; + const events = pardes.ctlfs.events; + try std.testing.expectEqualStrings("diff", events.expandAt(p, pane, body, 0, true, false)); + try std.testing.expectEqualStrings("@@", events.expandAt(p, pane, body, modal.lineStartOffset(body, 3), true, false)); + try std.testing.expectEqualStrings("+line", events.expandAt(p, pane, body, modal.lineStartOffset(body, 5), true, false)); + try std.testing.expectEqualStrings("src/x.zig", events.expandAt(p, pane, body, 0, true, true)); + try std.testing.expectEqualStrings("src/x.zig:1", events.expandAt(p, pane, body, modal.lineStartOffset(body, 5), true, true)); // An event reader on the pane. const event = pardes.ctlfs.Node.of(pane.serial, .event); |
