|
@@ -0,0 +1,60 @@
|
|
|
|
+From cad0c71adc30ca4d358cec3146495b340b2e068e Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Tronikel <contactdonatas@gmail.com>
|
|
|
|
+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)
|
|
|
|
+ '<cmd>bdelete<cr>',
|
|
|
|
+ { 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
|