diff options
| author | Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> | 2021-11-27 16:00:24 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-27 16:00:24 +0000 |
| commit | 414a7a5b44b464305754349248f323bf75d03b94 (patch) | |
| tree | 8d523cb69940489d6f35f49a7d2174011a8f29b1 /lua/telescope/pickers/entry_display.lua | |
| parent | b415e862bf248d66c40e242de4a0c76c68e278f1 (diff) | |
feat: extend functionality of `entry_display.create` (#1408)
* feat: extend functionality of `entry_display.create`
- now allows passing functions or fractional values to `width` option
* refactor: cache `width` instead of results window size
* feat: use new `width` functionality for more entry makers
Diffstat (limited to 'lua/telescope/pickers/entry_display.lua')
| -rw-r--r-- | lua/telescope/pickers/entry_display.lua | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lua/telescope/pickers/entry_display.lua b/lua/telescope/pickers/entry_display.lua index 0982e87..904641c 100644 --- a/lua/telescope/pickers/entry_display.lua +++ b/lua/telescope/pickers/entry_display.lua @@ -1,4 +1,6 @@ local strings = require "plenary.strings" +local state = require "telescope.state" +local resolve = require "telescope.config.resolve" local entry_display = {} entry_display.truncate = strings.truncate @@ -8,11 +10,19 @@ entry_display.create = function(configuration) for _, v in ipairs(configuration.items) do if v.width then local justify = v.right_justify + local width table.insert(generator, function(item) + if width == nil then + local status = state.get_status(vim.api.nvim_get_current_buf()) + local s = {} + s[1] = vim.api.nvim_win_get_width(status.results_win) - #status.picker.selection_caret + s[2] = vim.api.nvim_win_get_height(status.results_win) + width = resolve.resolve_width(v.width)(nil, s[1], s[2]) + end if type(item) == "table" then - return strings.align_str(entry_display.truncate(item[1], v.width), v.width, justify), item[2] + return strings.align_str(entry_display.truncate(item[1], width), width, justify), item[2] else - return strings.align_str(entry_display.truncate(item, v.width), v.width, justify) + return strings.align_str(entry_display.truncate(item, width), width, justify) end end) else |
