terminal: fix moving selection on history changing

This commit is contained in:
Mitchell Hashimoto
2025-11-25 21:51:54 -08:00
parent ad755b0e3d
commit 330ce07d48

View File

@@ -493,6 +493,10 @@ pub const ScreenSearch = struct {
// in our history (fast path)
if (results.items.len == 0) break :history;
// The number added to our history. Needed for updating
// our selection if we have one.
const added_len = results.items.len;
// Matches! Reverse our list then append all the remaining
// history items that didn't start on our original node.
std.mem.reverse(FlattenedHighlight, results.items);
@@ -505,7 +509,7 @@ pub const ScreenSearch = struct {
if (self.selected) |*m| selected: {
const active_len = self.active_results.items.len;
if (m.idx < active_len) break :selected;
m.idx += results.items.len;
m.idx += added_len;
// Moving the idx should not change our targeted result
// since the history is immutable.