commit 7d8db544417e7811ae6e3c5398e9d0481a0ada22
parent 6e44a6a289c538c9e05a5114ddb7f91f581e8965
Author: glepnir <glephunter@gmail.com>
Date: Fri, 22 Nov 2024 15:34:49 +0800
fix(lsp): delete b:lsp_floating_preview buf var after win close
Problem: After floating preview window closed the buf var still exist
Solution: delete after floating window closed.
Diffstat:
1 file changed, 5 insertions(+), 0 deletions(-)
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
@@ -1344,6 +1344,10 @@ local function close_preview_window(winnr, bufnrs)
local augroup = 'preview_window_' .. winnr
pcall(api.nvim_del_augroup_by_name, augroup)
+ local buf = vim.w[winnr].buf_hold_win
+ if buf and api.nvim_buf_is_valid(buf) then
+ vim.b[buf].lsp_floating_window = nil
+ end
pcall(api.nvim_win_close, winnr, true)
end)
end
@@ -1609,6 +1613,7 @@ function M.open_floating_preview(contents, syntax, opts)
{ silent = true, noremap = true, nowait = true }
)
close_preview_autocmd(opts.close_events, floating_winnr, { floating_bufnr, bufnr })
+ vim.w[floating_winnr].buf_hold_win = bufnr
-- save focus_id
if opts.focus_id then