mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
fix(lsp): close floating preview window correctly #34946
Problem: After28b7c2d
(found with bisect) the hover preview window does not close when :edit'ing another file, even when you move the cursor. Solution: Change the BufLeave to target the original buffer, not the preview buffer. (cherry picked from commitace254c9ff
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
407fc0bb16
commit
44b8255fa2
@@ -1340,9 +1340,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,
|
||||
})
|
||||
@@ -1351,13 +1352,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,
|
||||
@@ -1366,7 +1367,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,
|
||||
@@ -1613,7 +1614,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
|
||||
|
Reference in New Issue
Block a user