aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/terminal/search/active.zig
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 23:28:05 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-16 23:29:28 +0300
commit4a3302d19a2baa3a33e910e0088c24e780905b90 (patch)
treedcaf76fae1c82102d933c9225b17ca7ac5d3a847 /vendor/libghostty-vt/src/terminal/search/active.zig
parent550e9f8cc085f428429f5cf2da0bb2dba897e8b8 (diff)
chore: update vendored libghostty-vt
refs #276
Diffstat (limited to 'vendor/libghostty-vt/src/terminal/search/active.zig')
-rw-r--r--vendor/libghostty-vt/src/terminal/search/active.zig16
1 files changed, 8 insertions, 8 deletions
diff --git a/vendor/libghostty-vt/src/terminal/search/active.zig b/vendor/libghostty-vt/src/terminal/search/active.zig
index 692a10e1..b99b2357 100644
--- a/vendor/libghostty-vt/src/terminal/search/active.zig
+++ b/vendor/libghostty-vt/src/terminal/search/active.zig
@@ -56,6 +56,10 @@ pub const ActiveSearch = struct {
// Clear our previous sliding window
self.window.clearAndRetainCapacity();
+ // An empty needle represents an inactive search and has no overlap
+ // or history to load.
+ if (self.window.needle.len == 0) return null;
+
// First up, add enough pages to cover the active area.
var rem: usize = list.rows;
var node_ = list.pages.last;
@@ -68,26 +72,22 @@ pub const ActiveSearch = struct {
// page that contains the active area. We go to the previous
// page once more since its the first page of our required
// overlap.
- if (rem <= node.data.size.rows) {
+ if (rem <= node.rows()) {
node_ = node.prev;
break;
}
- rem -= node.data.size.rows;
+ rem -= node.rows();
}
// Next, add enough overlap to cover needle.len - 1 bytes (if it
// exists) so we can cover the overlap.
while (node_) |node| : (node_ = node.prev) {
- // If the last row of this node isn't wrapped we can't overlap.
- const row = node.data.getRow(node.data.size.rows - 1);
- if (!row.wrap) break;
-
// We could be more accurate here and count bytes since the
// last wrap but its complicated and unlikely multiple pages
// wrap so this should be fine.
- const added = try self.window.append(node);
- if (added >= self.window.needle.len - 1) break;
+ const appended = try self.window.appendIfWrapped(node) orelse break;
+ if (appended.content_len >= self.window.needle.len - 1) break;
}
// Return the last node we added to our window.