aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin/lsp/utils_spec.lua
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2025-03-11 20:10:09 +0800
committerGitHub <noreply@github.com>2025-03-11 05:10:09 -0700
commita14fca432b963b01ae9b47598f5d787520402810 (patch)
tree31c1cdc976eb661e15e80cbece52bd058f1432f4 /test/functional/plugin/lsp/utils_spec.lua
parent55bdb077b7069c018cc5ccf682417770abec5b4a (diff)
downloadrneovim-a14fca432b963b01ae9b47598f5d787520402810.tar.gz
rneovim-a14fca432b963b01ae9b47598f5d787520402810.tar.bz2
rneovim-a14fca432b963b01ae9b47598f5d787520402810.zip
fix(lsp): improve LSP floating preview window cleanup #31353
Problem: The current implementation creates a unique autocommand group for each floating preview window, which is inefficient and can lead to numerous autocommand groups. Solution: Use a single shared autocommand group with improved window validation to properly clean up LSP floating preview windows.
Diffstat (limited to 'test/functional/plugin/lsp/utils_spec.lua')
-rw-r--r--test/functional/plugin/lsp/utils_spec.lua58
1 files changed, 29 insertions, 29 deletions
diff --git a/test/functional/plugin/lsp/utils_spec.lua b/test/functional/plugin/lsp/utils_spec.lua
index 7bfb354c2e..fac9a2c69d 100644
--- a/test/functional/plugin/lsp/utils_spec.lua
+++ b/test/functional/plugin/lsp/utils_spec.lua
@@ -267,38 +267,38 @@ describe('vim.lsp.util', function()
eq(56, opts.height)
end)
+ end)
+ end)
- describe('vim.lsp.util.open_floating_preview', function()
- local var_name = 'lsp_floating_preview'
- local curbuf = api.nvim_get_current_buf()
-
- it('clean bufvar after fclose', function()
- exec_lua(function()
- vim.lsp.util.open_floating_preview({ 'test' }, '', { height = 5, width = 2 })
- end)
- eq(true, api.nvim_win_is_valid(api.nvim_buf_get_var(curbuf, var_name)))
- command('fclose')
- eq(
- 'Key not found: lsp_floating_preview',
- pcall_err(api.nvim_buf_get_var, curbuf, var_name)
- )
- end)
+ describe('open_floating_preview', function()
+ before_each(function()
+ n.clear()
+ Screen.new(10, 10)
+ feed('9i<CR><Esc>G4k')
+ end)
- it('clean bufvar after CursorMoved', function()
- local result = exec_lua(function()
- vim.lsp.util.open_floating_preview({ 'test' }, '', { height = 5, width = 2 })
- local winnr = vim.b[vim.api.nvim_get_current_buf()].lsp_floating_preview
- local result = vim.api.nvim_win_is_valid(winnr)
- vim.api.nvim_feedkeys(vim.keycode('G'), 'txn', false)
- return result
- end)
- eq(true, result)
- eq(
- 'Key not found: lsp_floating_preview',
- pcall_err(api.nvim_buf_get_var, curbuf, var_name)
- )
- end)
+ local var_name = 'lsp_floating_preview'
+ local curbuf = api.nvim_get_current_buf()
+
+ it('clean bufvar after fclose', function()
+ exec_lua(function()
+ vim.lsp.util.open_floating_preview({ 'test' }, '', { height = 5, width = 2 })
+ end)
+ eq(true, api.nvim_win_is_valid(api.nvim_buf_get_var(curbuf, var_name)))
+ command('fclose')
+ eq('Key not found: lsp_floating_preview', pcall_err(api.nvim_buf_get_var, curbuf, var_name))
+ end)
+
+ it('clean bufvar after CursorMoved', function()
+ local result = exec_lua(function()
+ vim.lsp.util.open_floating_preview({ 'test' }, '', { height = 5, width = 2 })
+ local winnr = vim.b[vim.api.nvim_get_current_buf()].lsp_floating_preview
+ local result = vim.api.nvim_win_is_valid(winnr)
+ vim.api.nvim_feedkeys(vim.keycode('G'), 'txn', false)
+ return result
end)
+ eq(true, result)
+ eq('Key not found: lsp_floating_preview', pcall_err(api.nvim_buf_get_var, curbuf, var_name))
end)
end)