diff options
author | luukvbaal <luukvbaal@gmail.com> | 2025-01-06 15:05:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-06 06:05:50 -0800 |
commit | 86770108e2c6e08c2b8b95f1611923ba99b854dd (patch) | |
tree | 5ce6e39933d3144a3b308488acc7d9c2d4533d56 | |
parent | 9b7905df16d841f4070cb4c460cd22af14784d5a (diff) | |
download | rneovim-86770108e2c6e08c2b8b95f1611923ba99b854dd.tar.gz rneovim-86770108e2c6e08c2b8b95f1611923ba99b854dd.tar.bz2 rneovim-86770108e2c6e08c2b8b95f1611923ba99b854dd.zip |
fix(lsp): open_floating_preview() zindex relative to current window #31886
Problem: open_floating_preview() may be hidden behind current window if
that is floating and has a higher zindex.
Solution: Open floating preview with zindex higher than current window.
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 2 | ||||
-rw-r--r-- | test/functional/plugin/lsp/utils_spec.lua | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 6bee5bc31f..89b774816b 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -883,7 +883,7 @@ function M.make_floating_popup_options(width, height, opts) style = 'minimal', width = width, border = opts.border or default_border, - zindex = opts.zindex or 50, + zindex = opts.zindex or (api.nvim_win_get_config(0).zindex or 49) + 1, title = title, title_pos = title_pos, } diff --git a/test/functional/plugin/lsp/utils_spec.lua b/test/functional/plugin/lsp/utils_spec.lua index ce6e6b2535..1e3e759e0b 100644 --- a/test/functional/plugin/lsp/utils_spec.lua +++ b/test/functional/plugin/lsp/utils_spec.lua @@ -301,4 +301,32 @@ describe('vim.lsp.util', function() end) end) end) + + it('open_floating_preview zindex greater than current window', function() + local screen = Screen.new() + exec_lua(function() + vim.api.nvim_open_win(0, true, { + relative = 'editor', + border = 'single', + height = 11, + width = 51, + row = 2, + col = 2, + }) + vim.keymap.set('n', 'K', function() + vim.lsp.util.open_floating_preview({ 'foo' }, '', { border = 'single' }) + end, {}) + end) + feed('K') + screen:expect([[ + ┌───────────────────────────────────────────────────┐| + │{4:^ }│| + │┌───┐{11: }│| + ││{4:foo}│{11: }│| + │└───┘{11: }│| + │{11:~ }│|*7 + └───────────────────────────────────────────────────┘| + | + ]]) + end) end) |