summaryrefslogtreecommitdiff
path: root/src/look.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/look.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/look.zig')
-rw-r--r--src/look.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/look.zig b/src/look.zig
index d53ac76a..796eb5bb 100644
--- a/src/look.zig
+++ b/src/look.zig
@@ -1209,7 +1209,10 @@ fn missed(p: *Pardes, id: usize, comptime fmt: []const u8, args: anytype) void {
var said: [miss_path_cap + 64]u8 = undefined;
const why = std.fmt.bufPrint(&said, fmt, args) catch "no match";
var msg: [said.len + 8]u8 = undefined;
+ // Shown on the pane; logged once, as the err below, not a msg too.
+ p.fs.unlogged = true;
p.setMessage(id, std.fmt.bufPrint(&msg, "Look: {s}", .{why}) catch "Look: no match");
+ p.fs.unlogged = false;
const serial = if (p.panes[id]) |pane| pane.serial else 0;
var rec: [said.len + 32]u8 = undefined;
pardes.ctlfs.events.notePath(p, "err", std.fmt.bufPrint(&rec, "{d} look: {s}", .{ serial, why }) catch return);