aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/lua/vim/lsp/util.lua4
-rw-r--r--test/functional/plugin/lsp/utils_spec.lua24
2 files changed, 27 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index 1219f71427..ef177e903f 100644
--- 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
index ccefc3cb99..75cc69bed4 100644
--- 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)