From cad0c71adc30ca4d358cec3146495b340b2e068e Mon Sep 17 00:00:00 2001 From: Tronikel Date: Tue, 15 Jul 2025 18:18:50 +0300 Subject: [PATCH] fix: close floating preview window correctly --- runtime/lua/vim/lsp/util.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index db221ddc6889e6..28d00d6cd307f2 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -1418,9 +1418,10 @@ end --- ---@param events table list of events ---@param winnr integer window id of preview window ----@param bufnrs table list of buffers where the preview window will remain visible +---@param floating_bufnr integer floating preview buffer +---@param bufnr integer buffer that opened the floating preview buffer ---@see autocmd-events -local function close_preview_autocmd(events, winnr, bufnrs) +local function close_preview_autocmd(events, winnr, floating_bufnr, bufnr) local augroup = api.nvim_create_augroup('nvim.preview_window_' .. winnr, { clear = true, }) @@ -1429,13 +1430,13 @@ local function close_preview_autocmd(events, winnr, bufnrs) -- the floating window buffer or the buffer that spawned it api.nvim_create_autocmd('BufLeave', { group = augroup, - buffer = bufnrs[1], + buffer = bufnr, callback = function() vim.schedule(function() -- When jumping to the quickfix window from the preview window, -- do not close the preview window. if api.nvim_get_option_value('filetype', { buf = 0 }) ~= 'qf' then - close_preview_window(winnr, bufnrs) + close_preview_window(winnr, { floating_bufnr, bufnr }) end end) end, @@ -1444,7 +1445,7 @@ local function close_preview_autocmd(events, winnr, bufnrs) if #events > 0 then api.nvim_create_autocmd(events, { group = augroup, - buffer = bufnrs[2], + buffer = bufnr, callback = function() close_preview_window(winnr) end, @@ -1690,7 +1691,7 @@ function M.open_floating_preview(contents, syntax, opts) 'bdelete', { silent = true, noremap = true, nowait = true } ) - close_preview_autocmd(opts.close_events, floating_winnr, { floating_bufnr, bufnr }) + close_preview_autocmd(opts.close_events, floating_winnr, floating_bufnr, bufnr) -- save focus_id if opts.focus_id then