Skip to content

Commit 01b2b04

Browse files
authored
fix: delete buffers after the window has closed (#263)
* fix: Delete confirmation window buffers after closing. THe confirmation buffers are unlisted, but never deleted. * fix: Delete auth popup window buffers after closing. * Explicitly delete multiline_input buffers after closing. These buffers configured with "bufhidden" "wipe", which should clean them up after the buffer is hidden anyway. This is just an extra check to be sure they are cleaned up.
1 parent 9c38dd4 commit 01b2b04

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

lua/mcphub/utils/ui.lua

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,27 @@ function M.multiline_input(title, content, on_save, opts)
110110
end
111111
end
112112
-- Close the window
113-
vim.api.nvim_win_close(win, true)
113+
if vim.api.nvim_win_is_valid(win) then
114+
vim.api.nvim_win_close(win, true)
115+
end
116+
117+
if vim.api.nvim_buf_is_valid(bufnr) then
118+
vim.api.nvim_buf_delete(bufnr, { force = true })
119+
end
114120
-- -- Call save callback if content changed
115121
-- if content ~= new_content then
116122
on_save(new_content)
117123
-- end
118124
end
119125

120126
local function close_window()
121-
vim.api.nvim_win_close(win, true)
127+
if vim.api.nvim_win_is_valid(win) then
128+
vim.api.nvim_win_close(win, true)
129+
end
130+
131+
if vim.api.nvim_buf_is_valid(bufnr) then
132+
vim.api.nvim_buf_delete(bufnr, { force = true })
133+
end
122134
if opts.on_cancel then
123135
opts.on_cancel()
124136
end
@@ -388,9 +400,11 @@ function M.confirm(message, opts)
388400

389401
vim.schedule(function()
390402
if vim.api.nvim_win_is_valid(win) then
391-
if vim.api.nvim_win_is_valid(win) then
392-
vim.api.nvim_win_close(win, true)
393-
end
403+
vim.api.nvim_win_close(win, true)
404+
end
405+
406+
if vim.api.nvim_buf_is_valid(bufnr) then
407+
vim.api.nvim_buf_delete(bufnr, { force = true })
394408
end
395409
callback(confirmed, cancelled)
396410
end)
@@ -605,6 +619,13 @@ function M.open_auth_popup(server_name, auth_url)
605619
if vim.api.nvim_win_is_valid(input_win) then
606620
vim.api.nvim_win_close(input_win, true)
607621
end
622+
623+
if vim.api.nvim_buf_is_valid(info_buf) then
624+
vim.api.nvim_buf_delete(info_buf, { force = true })
625+
end
626+
if vim.api.nvim_buf_is_valid(input_buf) then
627+
vim.api.nvim_buf_delete(input_buf, { force = true })
628+
end
608629
-- Return focus to MCPHub window
609630
if State.ui_instance and State.ui_instance.window then
610631
vim.api.nvim_set_current_win(State.ui_instance.window)

0 commit comments

Comments
 (0)