diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 16:18:03 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:15 -0300 |
| commit | 2a842d241c462c11959102f96a3945aec493cb86 (patch) | |
| tree | 1e284852b1301cd3f19b6c42a61ba6406f59857f /src/ninep/ctl.zig | |
| parent | 062523f4684e81715dec844bb1983b7bde7df5fc (diff) | |
| download | pardes-2a842d241c462c11959102f96a3945aec493cb86.tar.gz pardes-2a842d241c462c11959102f96a3945aec493cb86.zip | |
A click written back to event is done as the click, REPL and all; a REPL's ctl line names it
Writing an M record back from a .py body with a REPL bound ran the text as a
shell command (exit 127), where the click itself went to the REPL. acme does
what the click would have done (xfideventwrite, xfid.c:842-844), so a body X
record written back now goes the way a middle click goes: to a bound REPL,
bracketed or line by line, the several-REPLs question included. An F record,
a line written to exec, was never a click and still runs as a command. For a
readable list of bindings, the smallest place: a bound terminal's ctl line
ends with its id after current/notcurrent.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/ninep/ctl.zig')
| -rw-r--r-- | src/ninep/ctl.zig | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ninep/ctl.zig b/src/ninep/ctl.zig index 3690ac47..4e1c039b 100644 --- a/src/ninep/ctl.zig +++ b/src/ninep/ctl.zig @@ -163,7 +163,7 @@ fn writeQuoted(w: *std.Io.Writer, s: []const u8) !void { try w.writeByte('\''); } -pub const pane_text_cap = 7 * 12 + 2 * 256 + 4 + "notcurrent ".len; +pub const pane_text_cap = 7 * 12 + 2 * 256 + 4 + "notcurrent ".len + 48; /// acme's winctlprint: serial, tag length, body length, a reserved zero, the /// dirty flag, then the width in cells, the font and the tab width. Then @@ -186,6 +186,10 @@ pub fn paneText(p: *Pardes, pane: *Pane, buf: []u8) []const u8 { // While a column's or the workspace's tag has the keyboard, no pane does. const current = p.panes[p.active] == pane and !p.header_focus; w.print(" {d:>11} {s} ", .{ config.tab_width, if (current) "current" else "notcurrent" }) catch {}; + // A terminal bound as a REPL ends with its id, `python-a`. + var idbuf: [48]u8 = undefined; + const id = exec_line.replId(&idbuf, pane); + if (id.len > 0) w.print("{s} ", .{id}) catch {}; return w.buffered(); } |
