fix: do not use invalid bufnr and winid (#236)

* fix: do not use invalid buf

* fix: do not use invalid win
This commit is contained in:
yetone 2024-08-26 17:43:38 +08:00 committed by GitHub
parent 0769cef291
commit 8cd87ac5de
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 8 deletions

View File

@ -91,7 +91,12 @@ function FloatingWindow.from_split_win(split_winid, opts)
api.nvim_create_autocmd("WinResized", {
group = floating_win.augroup,
callback = function()
if not api.nvim_win_is_valid(split_winid) or not api.nvim_win_is_valid(winid) then
if
not split_winid
or not winid
or not api.nvim_win_is_valid(split_winid)
or not api.nvim_win_is_valid(winid)
then
return
end
@ -113,7 +118,12 @@ function FloatingWindow.from_split_win(split_winid, opts)
api.nvim_create_autocmd("WinResized", {
group = floating_win.augroup,
callback = function()
if not api.nvim_win_is_valid(split_winid) or not api.nvim_win_is_valid(winid) then
if
not split_winid
or not winid
or not api.nvim_win_is_valid(split_winid)
or not api.nvim_win_is_valid(winid)
then
return
end

View File

@ -106,7 +106,7 @@ function Sidebar:close()
comp:unmount()
end
end
if self.code ~= nil and api.nvim_win_is_valid(self.code.winid) then
if self.code and self.code.winid and api.nvim_win_is_valid(self.code.winid) then
fn.win_gotoid(self.code.winid)
end
@ -589,7 +589,7 @@ function Sidebar:on_mount()
api.nvim_create_autocmd("User", {
pattern = VIEW_BUFFER_UPDATED_PATTERN,
callback = function()
if self.result == nil then
if not self.result or not self.result.bufnr or not api.nvim_buf_is_valid(self.result.bufnr) then
return
end
codeblocks = parse_codeblocks(self.result.bufnr)
@ -775,8 +775,9 @@ function Sidebar:refresh_winids()
else
current_idx = current_idx + 1
end
if api.nvim_win_is_valid(winids[current_idx]) then
api.nvim_set_current_win(winids[current_idx])
local winid = winids[current_idx]
if winid and api.nvim_win_is_valid(winid) then
api.nvim_set_current_win(winid)
end
end
@ -788,8 +789,9 @@ function Sidebar:refresh_winids()
else
current_idx = current_idx - 1
end
if api.nvim_win_is_valid(winids[current_idx]) then
api.nvim_set_current_win(winids[current_idx])
local winid = winids[current_idx]
if winid and api.nvim_win_is_valid(winid) then
api.nvim_set_current_win(winid)
end
end
@ -1265,6 +1267,9 @@ function Sidebar:create_input()
end)
local function on_submit()
if not self.input or not self.input.bufnr or not api.nvim_buf_is_valid(self.input.bufnr) then
return
end
local lines = api.nvim_buf_get_lines(self.input.bufnr, 0, -1, false)
local request = table.concat(lines, "\n")
if request == "" then