summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/fs.md31
1 files changed, 22 insertions, 9 deletions
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 <serial> look: ...` (`no match for "zzq:#3"` quoting what
-was written when nothing by that name exists; `<path>: 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; `<path>:99 has no line 99`
+for a line past a file's end, `<path> has no page 99` for a PDF's page;
+`<path>: no match for regexp` or `<path>: 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 <serial> <line>` and `exit <serial> <N|?>`; `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
+ `% <line>` 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/<n>/exec`)
+ a command always runs as a command pane, in the session's directory. From a pane whose directory is gone nothing runs: `exec:
<dir>: 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-<date>-<time>.zon` (UTC) in `DumpDir`
- ([config.md](config.md#dumps)) and logs `dump <path>`. `Restore [path]`
+ ([config.md](config.md#dumps)), logs `dump <path>`, and adds a `Restore
+ <path>` word naming it to the workspace tag (the last dump's, replacing
+ an earlier one's). `Restore [path]`
replaces every pane (bare: the last dump this session wrote). The Restore
write is answered, then **every connection is hung up**: dial again, and
restart a 9ns mount. The new log has a `new` per pane, `restore <path>`,
@@ -584,7 +595,9 @@ Holding `event` open takes the pane's Look and Exec clicks: they come to the
reader as records instead of acting, as do lines written to the pane's own
`look`/`exec` (or the root's while it has the keyboard). A record is acme's
`<origin><action><q0> <q1> <flag> <n> <text>\n`; read `n` **bytes** of
-text, which may hold newlines.
+text, which may hold newlines. One open reads a pane's `event` at a time,
+as acme's is one window's: a second open for reading fails `file in use`
+(EBUSY) until the first is closed.
- origin: `E` a 9P write to body or tag, `F` other files and the editor's
own lines, `K` keyboard, `M` mouse.