From 891b80e5bb4c6c9ea1c35c08eae527eb775beac4 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 26 Nov 2025 12:48:29 +0100 Subject: [PATCH 1/2] fix: case fold find pattern in find_all_ranges mode .case_folded --- src/buffer/Buffer.zig | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/buffer/Buffer.zig b/src/buffer/Buffer.zig index b05b3d4..c5bc767 100644 --- a/src/buffer/Buffer.zig +++ b/src/buffer/Buffer.zig @@ -1039,9 +1039,19 @@ const Node = union(enum) { } } }; + const pattern_ = switch (mode) { + .exact => pattern, + .case_folded => unicode.case_fold(allocator, pattern) catch + allocator.dupe(u8, pattern) catch + @panic("OOM find_all_ranges"), + }; + defer switch (mode) { + .exact => {}, + .case_folded => allocator.free(pattern_), + }; var ctx: Ctx = .{ .allocator = allocator, - .pattern = pattern, + .pattern = pattern_, .data = data, .callback = callback, .buf = try allocator.alloc(u8, pattern.len * 2), From c1707b132eb3781c9ea85299bf1ebe99b4db9d84 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 26 Nov 2025 12:52:23 +0100 Subject: [PATCH 2/2] fix: smart select next find mode if find mode is .auto --- src/tui/mode/mini/find.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tui/mode/mini/find.zig b/src/tui/mode/mini/find.zig index b5f05c4..a887b40 100644 --- a/src/tui/mode/mini/find.zig +++ b/src/tui/mode/mini/find.zig @@ -180,7 +180,11 @@ const cmds = struct { pub fn toggle_find_mode(self: *Self, _: Ctx) Result { const new_find_mode: Buffer.FindMode = switch (self.find_mode) { .exact => .case_folded, - .auto, .case_folded => .exact, + .case_folded => .exact, + .auto => if (Buffer.unicode.is_lowercase(self.input_.items)) + .exact + else + .case_folded, }; const allocator = self.allocator; const query = try allocator.dupe(u8, self.input_.items);