diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-29 04:55:00 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:16 -0300 |
| commit | 253a5c1e036d96eada910c47eb500ed0c8e37b5c (patch) | |
| tree | 88366de4f3e17029a61b94ddb37e80795a9849fb /src/ninep/ctl.zig | |
| parent | cdf4cbbf1fdd121aabdbbea33f11d5ee44d7764e (diff) | |
| download | pardes-253a5c1e036d96eada910c47eb500ed0c8e37b5c.tar.gz pardes-253a5c1e036d96eada910c47eb500ed0c8e37b5c.zip | |
A pane has a tagexec: a word run as a click in its tag
The workspace had /tagexec and a column its exec, but a pane's own tag
could be clicked only by an event record. pane/<n>/tagexec runs each line
as a click in that pane's tag (never redirected to its event reader, as a
header's is not) and reads back what it touched. The README, fs.md and
the skill list it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/ninep/ctl.zig')
| -rw-r--r-- | src/ninep/ctl.zig | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ninep/ctl.zig b/src/ninep/ctl.zig index eb8ed292..f8623903 100644 --- a/src/ninep/ctl.zig +++ b/src/ninep/ctl.zig @@ -168,7 +168,7 @@ pub fn completeEnd(p: *Pardes, data: []const u8) usize { /// clicked text itself, so it may not be empty or carry control characters. /// A null `serial` clicks at whichever pane is active as each line runs, /// which is what the root's own look and exec mean; a serial stays put. -pub fn command(p: *Pardes, req: Req, serial: ?u32, exec: bool) Reply { +pub fn command(p: *Pardes, req: Req, serial: ?u32, exec: bool, in_tag: bool) Reply { for ([2]bool{ false, true }) |apply| { if (apply) p.fs.results_len = 0; var it = Messages.init(p, req.data); @@ -181,7 +181,7 @@ pub fn command(p: *Pardes, req: Req, serial: ?u32, exec: bool) Reply { const id = if (serial) |s| p.paneBySerial(s) orelse break else p.active; if (p.panes[id] == null) return Reply.fail(req.tag, E.NOENT); p.fs.no_pane_slot = false; - run(p, id, exec, text, false); + run(p, id, exec, text, in_tag); // A pane it would have opened had no slot: the write fails, and // a look reads back nothing. if (p.fs.no_pane_slot) { |
