neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 7d5866d471746ca68981e57884eaaeb8dea57f81
parent fb842dfc224d2c40b70648b0ee789304e43ade6c
Author: Robert Muir <rmuir@apache.org>
Date:   Tue,  4 Mar 2025 13:36:57 -0500

fix(lsp): open_floating_preview() ignores max_height (#32716)

Problem:  After 47aaddfa the max_height option is no longer respected.
          Hover documentation and Signature help windows take up the
          entire text height.
Solution: Compare to window's current height and only modify the height
          if it would reduce the height, not enlarge it.
Diffstat:
Mruntime/lua/vim/lsp/util.lua | 4+++-
Mtest/functional/plugin/lsp/utils_spec.lua | 24++++++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua @@ -1656,7 +1656,9 @@ function M.open_floating_preview(contents, syntax, opts) if not opts.height then -- Reduce window height if TS highlighter conceals code block backticks. local conceal_height = api.nvim_win_text_height(floating_winnr, {}).all - api.nvim_win_set_height(floating_winnr, conceal_height) + if conceal_height < api.nvim_win_get_height(floating_winnr) then + api.nvim_win_set_height(floating_winnr, conceal_height) + end end end diff --git a/test/functional/plugin/lsp/utils_spec.lua b/test/functional/plugin/lsp/utils_spec.lua @@ -383,4 +383,28 @@ describe('vim.lsp.util', function() | ]]) end) + + it('open_floating_preview height does not exceed max_height', function() + local screen = Screen.new() + exec_lua([[ + vim.lsp.util.open_floating_preview(vim.fn.range(1, 10), 'markdown', { + border = 'single', + width = 5, + max_height = 5, + focus = false, + }) + ]]) + screen:expect([[ + ^ | + ┌─────┐{1: }| + │{4:1 }│{1: }| + │{4:2 }│{1: }| + │{4:3 }│{1: }| + │{4:4 }│{1: }| + │{4:5 }│{1: }| + └─────┘{1: }| + {1:~ }|*5 + | + ]]) + end) end)