From 2a0a8684cfb837c7f51ec9a495293da58333cca9 Mon Sep 17 00:00:00 2001 From: yetone Date: Sat, 31 Aug 2024 12:30:22 +0800 Subject: [PATCH] fix(selection): cursor out of range when restoring (#411) --- lua/avante/selection.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lua/avante/selection.lua b/lua/avante/selection.lua index be79b32..638277d 100644 --- a/lua/avante/selection.lua +++ b/lua/avante/selection.lua @@ -102,7 +102,12 @@ function Selection:close_editing_input() end if self.cursor_pos and self.code_winid then vim.schedule(function() - api.nvim_win_set_cursor(self.code_winid, { self.cursor_pos[1], self.cursor_pos[2] }) + local bufnr = api.nvim_win_get_buf(self.code_winid) + local line_count = api.nvim_buf_line_count(bufnr) + local row = math.min(self.cursor_pos[1], line_count) + local line = api.nvim_buf_get_lines(bufnr, row - 1, row, true)[1] or "" + local col = math.min(self.cursor_pos[2], #line) + api.nvim_win_set_cursor(self.code_winid, { row, col }) end) end if self.editing_input_bufnr and api.nvim_buf_is_valid(self.editing_input_bufnr) then