From 86ce788e925bd19297213ef14cf02fa564ae9f10 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Wed, 30 Sep 2026 21:40:57 -0300 Subject: Docs give a look miss's real words, that event is one reader's, the real cap on held reads, Dump's Restore word, a reused command pane's runs, and the one-write trap fs.md's look misses now read as the editor says them (:99 has no line 99, has no page N); event says a second reading open fails file in use; held reads say the 64 state-holding opens are the real cap, under the 128 a connection may park; Dump says it adds a Restore word to the workspace tag; a reused command pane's body is said to keep each run under a % line, with how to take the last. The 9P skill gains the trap that bash's printf to a mounted ctl arrives one write per line. Co-Authored-By: Claude Opus 5.5 --- docs/fs.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'docs/fs.md') diff --git a/docs/fs.md b/docs/fs.md index 15f490ec..43980973 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -190,9 +190,11 @@ files`. `pty/data`, `pty/run` before its answer) waits in the editor and is answered when news comes. A second read on that open meanwhile fails `file in use`. A read the client flushed is dropped. One connection holds at most 128 -reads at once; the next is refused `too many reads waiting: 128`. A mount -(9ns) is one connection, so that is 128 followers through it, and the mount -keeps answering everything else beside them. Through a FUSE mount bash's +reads at once; the next is refused `too many reads waiting: 128`. Every +held read is on an open that keeps state, and those are 64 in the session +(above), so 64 is the real cap on reads held at once, through one +connection or many. A mount (9ns) is one connection, and it keeps +answering everything else beside its held reads. Through a FUSE mount bash's `read -t` cannot time out: wrap the loop in `timeout N`. **Stats.** A file whose text is kept has its real length: a pane's @@ -237,9 +239,11 @@ go. An `exec` line's blanks at either end are trimmed. terminal a word is always listed, rows spelled `@p3:12:5-9`. A miss logs `err look: ...` (`no match for "zzq:#3"` quoting what -was written when nothing by that name exists; `: no match for regexp` -or `address out of range` when the address fails), opens nothing, and leaves -`look` reading empty; the write succeeds. +was written when nothing by that name exists; `:99 has no line 99` +for a line past a file's end, ` has no page 99` for a PDF's page; +`: no match for regexp` or `: address out of range` when an +address fails), opens nothing, and leaves `look` reading empty; the write +succeeds. A path too long to repeat whole gives up its middle to `…`. A line written to `exec` is a middle click: @@ -274,7 +278,12 @@ A line written to `exec` is a middle click: says `run ` and `exit `; `exec` reads back its serial. A typo ends `exit 127`. The directory's next command reuses a finished command pane, below what it showed; one still running gets a - second pane. From a pane whose directory is gone nothing runs: `exec: + second pane. A reused pane's `body` keeps every earlier run above a + `% ` row naming each command, so to take only the last run's + output read from after the last `% ` row: + `awk '/^% /{out=""; next} {out = out $0 "\n"} END {printf "%s", out}' body`. + From a column's or the workspace's tag (or `/tagexec`, `col//exec`) + a command always runs as a command pane, in the session's directory. From a pane whose directory is gone nothing runs: `exec: : no such directory` (ENOENT). The root's `look` and `exec` act at the active pane and log as that pane's @@ -322,7 +331,9 @@ Writes take settings and session builtins (`scope = .session` in a pane's `get` refuse the same way with their own word. A `+New` scratch under 100 bytes, or a command's output, is never asked about. - `Dump` writes `pardes--