diff options
author | Folke Lemaitre <folke.lemaitre@gmail.com> | 2021-06-05 10:13:01 +0200 |
---|---|---|
committer | Folke Lemaitre <folke.lemaitre@gmail.com> | 2021-06-05 10:13:01 +0200 |
commit | 149efa9b2bb8c1b810946647e9f91501c8d0e045 (patch) | |
tree | 9f94101f472f305dffd3ad77f836ef6bd02b1c0b /runtime/lua/vim/lsp/util.lua | |
parent | ca802046bf0667b211f72330619a18fec3fea5f0 (diff) | |
download | rneovim-149efa9b2bb8c1b810946647e9f91501c8d0e045.tar.gz rneovim-149efa9b2bb8c1b810946647e9f91501c8d0e045.tar.bz2 rneovim-149efa9b2bb8c1b810946647e9f91501c8d0e045.zip |
fix(lsp): max 1 floating preview per buffer. Fixes #11508
Diffstat (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index a986bd6f81..1e6a4ebd41 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -1372,6 +1372,13 @@ function M.open_floating_preview(contents, syntax, opts) end end + -- check if another floating preview already exists for this buffer + -- and close it if needed + local existing_float = npcall(api.nvim_buf_get_var, bufnr, "lsp_floating_preview") + if existing_float and api.nvim_win_is_valid(existing_float) then + api.nvim_win_close(existing_float, true) + end + local floating_bufnr = api.nvim_create_buf(false, true) local do_stylize = syntax == "markdown" and opts.stylize_markdown @@ -1417,6 +1424,7 @@ function M.open_floating_preview(contents, syntax, opts) if opts.focus_id then api.nvim_win_set_var(floating_winnr, opts.focus_id, bufnr) end + api.nvim_buf_set_var(bufnr, "lsp_floating_preview", floating_winnr) return floating_bufnr, floating_winnr end |