From ebd090c0fe8a3f5acff0897d8724ac0f281db9d2 Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Sat, 12 Sep 2020 23:15:07 -0400 Subject: wip: some more musings on resolving height and width --- lua/telescope/config/resolve.lua | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) (limited to 'lua/telescope/config/resolve.lua') diff --git a/lua/telescope/config/resolve.lua b/lua/telescope/config/resolve.lua index 5aa9c84..b00d66c 100644 --- a/lua/telescope/config/resolve.lua +++ b/lua/telescope/config/resolve.lua @@ -87,21 +87,41 @@ local get_default = require('telescope.utils').get_default local resolver = {} -local percentage_resolver = function(selector, percentage) - assert(percentage <= 1) - assert(percentage >= 0) +local _resolve_map = { + -- Percentages + [function(val) return type(val) == 'number' and val > 0 and val <= 1 end] = function(selector, val) + return function(...) + return math.floor(val * select(selector, ...)) + end + end, + + -- Numbers + [function(val) return type(val) == 'number' and val > 1 end] = function(selector, val) + return function(...) + return math.min(val, select(selector, ...)) + end + end, + +} - return function(...) - return percentage * select(selector, ...) +resolver.resolve_height = function(val) + for k, v in pairs(_resolve_map) do + if k(val) then + return v(3, val) + end end -end -resolver.resolve_percentage_height = function(percentage) - return percentage_resolver(3, percentage) + error('invalid configuration option for height:' .. tostring(val)) end -resolver.resolve_percentage_width = function(percentage) - return percentage_resolver(2, percentage) +resolver.resolve_width = function(val) + for k, v in pairs(_resolve_map) do + if k(val) then + return v(2, val) + end + end + + error('invalid configuration option for height:' .. tostring(val)) end --- Win option always returns a table with preview, results, and prompt. -- cgit v1.2.3