diff --git a/lua/avante/llm_tools/replace_in_file.lua b/lua/avante/llm_tools/replace_in_file.lua index 546c47d..f97b016 100644 --- a/lua/avante/llm_tools/replace_in_file.lua +++ b/lua/avante/llm_tools/replace_in_file.lua @@ -708,15 +708,16 @@ function M.func(opts, on_log, on_complete, session_ctx) end if diff_blocks[1] then + local line_count = vim.api.nvim_buf_line_count(bufnr) local winnr = Utils.get_winid(bufnr) if is_streaming then -- In streaming mode, focus on the last diff block local last_diff_block = diff_blocks[#diff_blocks] - vim.api.nvim_win_set_cursor(winnr, { last_diff_block.start_line, 0 }) + vim.api.nvim_win_set_cursor(winnr, { math.min(last_diff_block.start_line, line_count), 0 }) vim.api.nvim_win_call(winnr, function() vim.cmd("normal! zz") end) else -- In normal mode, focus on the first diff block - vim.api.nvim_win_set_cursor(winnr, { diff_blocks[1].new_start_line, 0 }) + vim.api.nvim_win_set_cursor(winnr, { math.min(diff_blocks[1].new_start_line, line_count), 0 }) vim.api.nvim_win_call(winnr, function() vim.cmd("normal! zz") end) end end