diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 12:15:03 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:14 -0300 |
| commit | cfcff94ab2b1ff5a0fb61dead60ead09bf892d30 (patch) | |
| tree | 61f132ac6cac6b2fb8d8eafeba2f613e091cc3a9 /.agents | |
| parent | a8248e91873f040eed1fd24d5af7c0ca285483ef (diff) | |
| download | pardes-cfcff94ab2b1ff5a0fb61dead60ead09bf892d30.tar.gz pardes-cfcff94ab2b1ff5a0fb61dead60ead09bf892d30.zip | |
docs: data's truncation is pardes's own, a second write inserts, and a waiting pty/run is cancelled
Review asked the docs to say what a script trips on: acme ignores OTRUNC on
data (fsys.c:543), so truncating it is an extension; addr sits past each write,
so a second echo x > data inserts after the first; and a pty/run line waiting
for a fresh terminal's first prompt waits for ever if none is drawn, so the way
out is to interrupt the read. The lock's retry advice was already there.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to '.agents')
| -rw-r--r-- | .agents/skills/pardes-9p/SKILL.md | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md index 330f029d..e031f436 100644 --- a/.agents/skills/pardes-9p/SKILL.md +++ b/.agents/skills/pardes-9p/SKILL.md @@ -50,6 +50,7 @@ $m/look write a line = a right click on it at the active pane $m/exec write a line = a middle click: an editor command word, or a shell line $m/pane/<n>/pty/run write one line, read `exit N` + its output, or `busy` / `error ...`, on the same open: exec 3<>$m/pane/$n/pty/run; echo make >&3; cat <&3 + (a fresh terminal: waits for its first prompt; if none comes, interrupt the read) $m/log recent events, then EOF: new|del|rename|save <serial> <name>, msg <serial|-> <text> (exec 3<>$m/log; echo follow >&3; cat <&3 waits for new ones; tail -f does not) $m/screen the rendered screen as JSON, frozen per open @@ -129,6 +130,10 @@ For a file or scratch pane, with `pane=$m/pane/<serial>`: | Address a byte range | `echo '#0,#2' > $pane/addr` | `client.write(pane + '/addr', b'#0,#2')` | | Replace that range | `printf 'pub fn' > $pane/data` (`>>` too) | `client.write(pane + '/data', b'pub fn')` | | Delete that range | `: > $pane/data` | truncate `data` (open with OTRUNC) | + +A write leaves `addr` just past what it wrote, so a second `echo x > data` +inserts after the first: write `addr` again before each replacement. +Truncating `data` is pardes's own (acme ignores OTRUNC and always inserts). | Read the selection | `cat $pane/dot` (offsets), `cat $pane/sel` (text) | the same two reads | | Select the addressed range | `cp $pane/addr $pane/dot` | `client.write(pane + '/dot', client.read(pane + '/addr'))` | | Reload from disk | `echo get > $pane/ctl` | `client.write(pane + '/ctl', b'get\n')` | |
