From 53fcf030b175fc035e62d1d471c01c2e0caefc9e Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 11:18:33 -0300 Subject: A Find or Grep that finds nothing empties its directory's +Search It failed with no match but left the last search's rows in the +Search, where they read as this one's. Co-Authored-By: Claude Opus 5.5 --- src/Output.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/Output.zig') diff --git a/src/Output.zig b/src/Output.zig index 99246b4a..eb9e8db4 100644 --- a/src/Output.zig +++ b/src/Output.zig @@ -418,6 +418,16 @@ pub fn open(p: *Pardes, id: usize, dir: []const u8, from: Origin, arg: []const u /// Find and Grep share one +Search a directory, each run replacing what /// the last showed, as acme reuses a directory's +Errors; a pane's own /// search (LookWord list) keeps a pane a pattern. +/// Whether `dir` has its Find/Grep +Search open. +pub fn hasFileSearch(p: *Pardes, dir: []const u8) bool { + for (p.panes) |slot| { + const f = (slot orelse continue).file orelse continue; + const o = f.output orelse continue; + if (fileSearch(o.from) and std.mem.eql(u8, std.fs.path.dirname(f.path) orelse "", dir)) return true; + } + return false; +} + fn fileSearch(from: Origin) bool { return switch (from) { .cmd => |c| c == .Find or c == .Grep, -- cgit v1.3