summaryrefslogtreecommitdiff
path: root/docs/fs.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 08:25:27 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commitf41599385cc0ee990954b32eca79984d54d0c5e3 (patch)
tree4e429dda6eb88119a91f08a798d4ad53cabdf88d /docs/fs.md
parent0bb3f6d4f71a3a10eba846ae3ab5064630b12201 (diff)
downloadpardes-f41599385cc0ee990954b32eca79984d54d0c5e3.tar.gz
pardes-f41599385cc0ee990954b32eca79984d54d0c5e3.zip
The docs: data writes replace their range, restored command panes show their exit, the tag's default words, empty matches at #0, errors' fallback, tagexec and event readers, Find finds names
Dogfood round 18 found these false: `>>` on data replaces the addressed range (acme's data write deletes then inserts); a restored command pane shows the `exit N` it ended with; the default tag words are `Save Tty Collapse Del`; `file:0/^/` passes over the empty match at #0; `errors` with no room logs msg records; a pane's tagexec never goes to an event reader; a scratch is named with `(pane N)` in a refusal; and /commands said Find searched the pane, where it finds file names. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs/fs.md')
-rw-r--r--docs/fs.md32
1 files changed, 21 insertions, 11 deletions
diff --git a/docs/fs.md b/docs/fs.md
index b4c006d3..cfc8e656 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -180,7 +180,9 @@ through a `ctl` write or a click: first one `/log` record per pane,
`unsaved <serial> <name>`, then the write fails with one line that is
never a list cut short, `<name>: Modified (Exit again to discard)` for one
pane, `4 unsaved panes: Modified (Exit again to discard)` for more, and
-the `err` record says the same; each pane's message row names it. Restore,
+the `err` record says the same; each pane's message row names it, a
+`+New` scratch with its serial, as scratches share a name: `/dir/+New
+(pane 12): Modified (Exit again to discard)`. Restore,
Del and Delcol refuse the same way, with their own word; an `Exit` after more editing refuses
again naming only the panes edited since the last refusal, as acme's does,
and an `Exit` with nothing edited since quits, throwing all of it away; a scratch or a
@@ -202,8 +204,9 @@ log names the restored panes and
`restore <path>`. Restored panes have new serials (`restored <old>
<new>` maps them) and so may columns (`restoredcol`; a fresh editor counts
column serials from 1 again, so they often come back the same). A command
-pane comes back showing what it showed, its tag `exit ?`: its command is
-not run again. REPL bindings are not dumped. The answer has 200 ms to leave before the cut, so a slow
+pane comes back showing what it showed, its tag saying how it ended,
+`exit 0` (`exit ?` for one still running when dumped, whose end nobody
+saw): its command is not run again. REPL bindings are not dumped. The answer has 200 ms to leave before the cut, so a slow
client may see only the cut; the log's `restore <path>` is what says the
Restore happened. Keeping connections across it would mean carrying serials
and opens into the new editor, which acme, whose Load only adds windows,
@@ -496,6 +499,9 @@ opens (or finds) the file and selects what the address names. **The
address is evaluated from the file's dot**, as acme's is: `file:/re/`
finds the next match after the current selection, not the first in the
file. For the first, start at the top: `file:0/re/` (or `file:#0/re/`).
+A pattern that can match empty, such as `^`, passes over the empty match
+at #0 as sam does (a search never answers where it started), so it finds
+the next one: for the start itself write `file:0` or `file:#0`.
`:addr` does the same in the pane itself, and a pattern may hold blanks
(`calc.py:/return a/`). `file:12` selects line 12, its newline included,
as acme's does; `file:12:5` puts the caret at line 12, column 5. A bare
@@ -522,10 +528,13 @@ lines: a row the terminal wrapped is joined back to the row before it (the
wrap is ghostty's, as `pty/run`'s output unwraps), and the last line ends
with a newline. `sel`
reads the selected text and writing it replaces the selection. `errors`
-appends to the directory's `+Errors` pane. Holding `event` open redirects the
+appends to the directory's `+Errors` pane; with no room for that pane in
+any column, what it would have shown is logged as `msg` records instead, a
+line each, and the write still succeeds. Holding `event` open redirects the
pane's Look and Exec clicks to that client, and so does a line written to the
pane's own `look` or `exec`, or to the root's while that pane has the
-keyboard, a click with no place in the text: an `F` record at `0 0` carrying
+keyboard (never its `tagexec`, which is a click in its tag and runs), a
+click with no place in the text: an `F` record at `0 0` carrying
the line. So a client holding `event` that wants a command run gets its own
exec back as a record: it runs it through `ctl`, or writes the record back.
Writing a record back performs the action, as the click would have (acme's
@@ -610,11 +619,12 @@ column a tool gives in characters (pytest's, a compiler's) is the same
only on an ASCII line; elsewhere address the line and search it
(`12/name/`) or use `#n`. sam would read `12:5` as a syntax
error.
-Truncating `data` or `xdata` deletes the range `addr` names and nothing
-else, so a shell's `echo NEW > data` replaces that range, `: > data`
-deletes it, and `>>` inserts at it; only truncating `body` empties the
-whole buffer. Truncating `data` is pardes's own: acme ignores OTRUNC there
-(editors/acme/fsys.c:543) and every write inserts. And as in acme a write
+A write to `data` or `xdata` replaces the range `addr` names, as acme's
+does (editors/acme/xfid.c:491-523: it deletes the range, then inserts), so
+`echo NEW > data` and `echo NEW >> data` both replace that range, and
+truncating deletes it and nothing else, so `: > data` deletes it; only
+truncating `body` empties the whole buffer. Truncating `data` is pardes's
+own: acme ignores OTRUNC there (editors/acme/fsys.c:543). And as in acme a write
leaves `addr` just past what it wrote, so a second `echo x > data` deletes
the empty range there and inserts after the first rather than replacing it
again; write `addr` before each replacement. A read of `data` or `xdata`
@@ -707,7 +717,7 @@ page (no mark for unsaved text: the grip shows that, and `dirty` says it),
then the text you may edit. A write appends to that text,
newlines included, and a tag with more than one line takes a row per line on
screen; truncating `tag` clears it, as acme's `cleartag` does -- the default
-words (`Del`, `Put` and the rest) with it, since they are that text until
+words (`Save Tty Collapse Del` and the rest) with it, since they are that text until
you edit it, so `echo Make > tag` leaves only `Make` -- a truncating write
drops the one newline that ends what it wrote, which would draw an empty
row, and keeps any other; append with `>>` to