aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/util.lua
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2024-11-22 15:34:49 +0800
committerLewis Russell <me@lewisr.dev>2024-11-22 10:16:40 +0000
commit7d8db544417e7811ae6e3c5398e9d0481a0ada22 (patch)
tree43f8eff7be8b2f04de026711f05a518122aca702 /runtime/lua/vim/lsp/util.lua
parent6e44a6a289c538c9e05a5114ddb7f91f581e8965 (diff)
downloadrneovim-7d8db544417e7811ae6e3c5398e9d0481a0ada22.tar.gz
rneovim-7d8db544417e7811ae6e3c5398e9d0481a0ada22.tar.bz2
rneovim-7d8db544417e7811ae6e3c5398e9d0481a0ada22.zip
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 (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r--runtime/lua/vim/lsp/util.lua5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index cfa8a194d9..24837c3b44 100644
--- 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