summaryrefslogtreecommitdiff
path: root/test/panes.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 16:15:15 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commit06fe2290db7d0eb654b9a908358942cfde298e29 (patch)
tree3951919743798ec978e7ae925529c4fbd4ea130a /test/panes.zig
parent07a3f53993a27c886ccb3ed665acb9c8b34a2873 (diff)
downloadpardes-06fe2290db7d0eb654b9a908358942cfde298e29.tar.gz
pardes-06fe2290db7d0eb654b9a908358942cfde298e29.zip
$ keeps the selections a shell command exits 0 on, and line end is gl
$ was a second key for line end, which helix never meant: in helix it is shell_keep_pipe. It now arms the pipe prompt with a $ marker, runs the command once per range with that range's text on stdin, and keeps the ranges it exits 0 on; the primary stays if kept, else the last kept range takes over, and keeping none changes nothing. The runner's answer is all or nothing, so the command runs in a subshell whose status is echoed as its output. Line end stays on helix's own gl and End; the snapshots, tutor and docs that pressed $ for it press gl. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test/panes.zig')
-rw-r--r--test/panes.zig6
1 files changed, 5 insertions, 1 deletions
diff --git a/test/panes.zig b/test/panes.zig
index 0b9909ad..f0e1ba3d 100644
--- a/test/panes.zig
+++ b/test/panes.zig
@@ -1954,7 +1954,11 @@ test "a prompt owns the pipe behavior through cancellation and submission" {
p.update(.{ .key = .{ .cp = Key.enter } });
const pending = p.pipe.wait orelse return error.MissingPipe;
try std.testing.expectEqual(how, pending.how);
- try std.testing.expectEqualStrings("cat", pending.command);
+ // `$` runs the command in a subshell that reports its status
+ if (how == .keep)
+ try std.testing.expect(std.mem.indexOf(u8, pending.command, "\ncat\n") != null)
+ else
+ try std.testing.expectEqualStrings("cat", pending.command);
try std.testing.expectEqual(@as(usize, 1), pending.inputs.len);
try std.testing.expectEqualStrings(if (how.pipes()) "one" else "", pending.inputs[0].bytes);
try std.testing.expect(pane.prompt == .none);