From 79dafaf1a05b24f578b6badc62343816555b1c27 Mon Sep 17 00:00:00 2001 From: Patrick Cleaveliln Date: Sat, 26 Jul 2025 18:59:08 +0000 Subject: [PATCH] move to next search result while typing --- src/panels/file_buffer.odin | 16 ++++++++++++++++ src/panels/grep.odin | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/panels/file_buffer.odin b/src/panels/file_buffer.odin index 604b9ce..d931699 100644 --- a/src/panels/file_buffer.odin +++ b/src/panels/file_buffer.odin @@ -102,6 +102,22 @@ make_file_buffer_panel :: proc(file_path: string, line: int = 0, col: int = 0) - on_buffer_input = proc(panel: ^core.Panel, state: ^core.State) { panel_state := &panel.type.(core.FileBufferPanel) run_query(panel_state, &panel_state.buffer) + + if len(panel_state.query_results) > 0 { + for result, i in panel_state.query_results { + cursor := panel_state.buffer.history.cursor + + if result.line >= cursor.line || (result.line == cursor.line && result.col >= cursor.col) { + core.move_cursor_to_location(&panel_state.buffer, result.line, result.col) + break + } + + if i == len(panel_state.query_results)-1 { + result := panel_state.query_results[0] + core.move_cursor_to_location(&panel_state.buffer, result.line, result.col) + } + } + } }, render = proc(panel: ^core.Panel, state: ^core.State) -> (ok: bool) { panel_state := &panel.type.(core.FileBufferPanel) diff --git a/src/panels/grep.odin b/src/panels/grep.odin index cfe0043..7ba6773 100644 --- a/src/panels/grep.odin +++ b/src/panels/grep.odin @@ -290,7 +290,7 @@ rs_grep_as_results :: proc(results: ^RS_GrepResults, allocator := context.alloca query_results := make([]core.GrepQueryResult, results.len) - for i in 0..