fix: Respect cmdheight and laststatus
This commit is contained in:
@@ -98,7 +98,7 @@ local _resolve_map = {
|
|||||||
end,
|
end,
|
||||||
|
|
||||||
-- Percentages
|
-- Percentages
|
||||||
[function(val) return type(val) == 'number' and val > 0 and val < 1 end] = function(selector, val)
|
[function(val) return type(val) == 'number' and val >= 0 and val < 1 end] = function(selector, val)
|
||||||
return function(...)
|
return function(...)
|
||||||
return math.floor(val * select(selector, ...))
|
return math.floor(val * select(selector, ...))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -280,7 +280,12 @@ function Picker:find()
|
|||||||
-- 1. Prompt window
|
-- 1. Prompt window
|
||||||
-- 2. Options window
|
-- 2. Options window
|
||||||
-- 3. Preview window
|
-- 3. Preview window
|
||||||
local popup_opts = self:get_window_options(vim.o.columns, vim.o.lines)
|
local line_count = vim.o.lines - vim.o.cmdheight
|
||||||
|
if vim.o.laststatus ~= 0 then
|
||||||
|
line_count = line_count - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local popup_opts = self:get_window_options(vim.o.columns, line_count)
|
||||||
|
|
||||||
-- `popup.nvim` massaging so people don't have to remember minheight shenanigans
|
-- `popup.nvim` massaging so people don't have to remember minheight shenanigans
|
||||||
popup_opts.results.minheight = popup_opts.results.height
|
popup_opts.results.minheight = popup_opts.results.height
|
||||||
|
|||||||
@@ -215,18 +215,25 @@ layout_strategies.vertical = function(self, max_columns, max_lines)
|
|||||||
prompt.width = width
|
prompt.width = width
|
||||||
|
|
||||||
-- Height
|
-- Height
|
||||||
local height_padding = resolve.resolve_height(layout_config.height_padding or 3)(self, max_columns, max_lines)
|
local height_padding = math.max(
|
||||||
|
1,
|
||||||
|
resolve.resolve_height(layout_config.height_padding or 3)(self, max_columns, max_lines)
|
||||||
|
)
|
||||||
|
local picker_height = max_lines - 2 * height_padding
|
||||||
|
|
||||||
results.height = resolve.resolve_height(layout_config.results_height or 10)(self, max_columns, max_lines)
|
local preview_total = 0
|
||||||
prompt.height = 1
|
preview.height = 0
|
||||||
|
|
||||||
-- The last 2 * 2 is for the extra borders
|
|
||||||
if self.previewer then
|
if self.previewer then
|
||||||
preview.height = max_lines - results.height - prompt.height - 2 * 2 - height_padding * 2
|
preview.height = resolve.resolve_height(
|
||||||
else
|
layout_config.preview_height or (max_lines - 15)
|
||||||
results.height = max_lines - prompt.height - 2 - height_padding * 2
|
)(self, max_columns, picker_height)
|
||||||
|
|
||||||
|
preview_total = preview.height + 2
|
||||||
end
|
end
|
||||||
|
|
||||||
|
prompt.height = 1
|
||||||
|
results.height = picker_height - preview_total - prompt.height - 2
|
||||||
|
|
||||||
results.col, preview.col, prompt.col = width_padding, width_padding, width_padding
|
results.col, preview.col, prompt.col = width_padding, width_padding, width_padding
|
||||||
|
|
||||||
if self.previewer then
|
if self.previewer then
|
||||||
|
|||||||
Reference in New Issue
Block a user