summaryrefslogtreecommitdiff
path: root/src/fs.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 06:05:08 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commit554181b73fd53b898841203066382e4287b83e89 (patch)
tree09447d6a6ee1f3cdb3f70fbb6f136fb90a289f08 /src/fs.zig
parent81ec44ca3b103bdc755e9f5d73a270c05c88617b (diff)
downloadpardes-554181b73fd53b898841203066382e4287b83e89.tar.gz
pardes-554181b73fd53b898841203066382e4287b83e89.zip
One rule for failing builtins: the write fails, one err, no msg
A builtin that failed through a ctl failed the write and logged its err, but through look, exec, tagexec or a column's exec it only said so on the message row, logged as a msg, and the write succeeded. Now every click write runs its builtin as a ctl line does (ctl.captured): a failure fails the write, with its words (EINVAL for malformed input, else EIO or what the words name), logs one err and no msg or announcement. get's Modified and a look miss are shown but logged once, as their err. A control character's refusal names its reason, a failed click reads back nothing, and look never reads back a pane closed since. The special case for a cut-short Edit through exec goes (the rule covers it); fs.md's table of exceptions becomes the one rule, as does the skill. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/fs.zig')
-rw-r--r--src/fs.zig4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/fs.zig b/src/fs.zig
index cb89648c..71e2cbad 100644
--- a/src/fs.zig
+++ b/src/fs.zig
@@ -1274,6 +1274,10 @@ pub const Namespace = struct {
/// A ctl write's failure is being said: its err record logs it, so
/// no msg does (Messages.reportFailure).
unlogged: bool = false,
+ /// A 9P write of clicks (look, exec, tagexec, a column's exec) is running
+ /// one: a builtin's failure is the write's, as a ctl line's is (no_prompt,
+ /// which also refuses prompts, which a click may open).
+ capturing: bool = false,
/// A 9P request is being served (Pardes.serveFs): a prompt it opens is
/// a question for the log (`ask`), answered with `answer`.
serving: bool = false,