diff options
| author | TJ DeVries <devries.timothyj@gmail.com> | 2020-09-12 14:56:58 -0400 |
|---|---|---|
| committer | TJ DeVries <devries.timothyj@gmail.com> | 2020-09-12 14:56:58 -0400 |
| commit | f449c0499ca63e653c9829c2e40bff7594e9eb23 (patch) | |
| tree | b9fa4cc01c589234fc8c5f9b9b313002a6e56629 /lua/telescope | |
| parent | 58ab225dca31607c4a2e1a5fbebdb26b5be1d5e1 (diff) | |
feat: Better border configuration.
Started adding `resolve` which will allow you to do some really nice
stuff easily with options to get the window options from a variety of
inputs.
You can see how we do it in pickers.lua for borders & borderchars
currently.
Diffstat (limited to 'lua/telescope')
| -rw-r--r-- | lua/telescope/config/resolve.lua (renamed from lua/telescope/pickers/config_collapse.lua) | 52 | ||||
| -rw-r--r-- | lua/telescope/pickers.lua | 17 |
2 files changed, 61 insertions, 8 deletions
diff --git a/lua/telescope/pickers/config_collapse.lua b/lua/telescope/config/resolve.lua index ee59c10..5aa9c84 100644 --- a/lua/telescope/pickers/config_collapse.lua +++ b/lua/telescope/config/resolve.lua @@ -79,8 +79,12 @@ That's the next step to scrolling. width = ... } + + --]] +local get_default = require('telescope.utils').get_default + local resolver = {} local percentage_resolver = function(selector, percentage) @@ -100,4 +104,52 @@ resolver.resolve_percentage_width = function(percentage) return percentage_resolver(2, percentage) end +--- Win option always returns a table with preview, results, and prompt. +--- It handles many different ways. Some examples are as follows: +-- +-- -- Disable +-- borderschars = false +-- +-- -- All three windows share the same +-- borderchars = { '─', '│', '─', '│', '┌', '┐', '┘', '└'}, +-- +-- -- Each window gets it's own configuration +-- borderchars = { +-- preview = {...}, +-- results = {...}, +-- prompt = {...}, +-- } +-- +-- -- Default to [1] but override with specific items +-- borderchars = { +-- {...} +-- prompt = {...}, +-- } +resolver.win_option = function(val, default) + if type(val) ~= 'table' or vim.tbl_islist(val) then + if val == nil then + val = default + end + + return { + preview = val, + results = val, + prompt = val, + } + elseif type(val) == 'table' then + assert(not vim.tbl_islist(val)) + + local val_to_set = val[1] + if val_to_set == nil then + val_to_set = default + end + + return { + preview = get_default(val.preview, val_to_set), + results = get_default(val.results, val_to_set), + prompt = get_default(val.prompt, val_to_set), + } + end +end + return resolver diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index cd83b3c..d402b39 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -3,6 +3,7 @@ local popup = require('popup') local actions = require('telescope.actions') local config = require('telescope.config') +local resolve = require('telescope.config.resolve') local layout_strategies = require('telescope.pickers.layout_strategies') local log = require('telescope.log') local mappings = require('telescope.mappings') @@ -134,28 +135,28 @@ function Picker:new(opts) end function Picker:_get_initial_window_options(prompt_title) - local popup_border = self.window.border - local popup_borderchars = self.window.borderchars + local popup_border = resolve.win_option(self.window.border) + local popup_borderchars = resolve.win_option(self.window.borderchars) local preview = { title = 'Preview', - border = popup_border, - borderchars = popup_borderchars, + border = popup_border.preview, + borderchars = popup_borderchars.preview, enter = false, highlight = false } local results = { title = 'Results', - border = popup_border, - borderchars = popup_borderchars, + border = popup_border.results, + borderchars = popup_borderchars.results, enter = false, } local prompt = { title = prompt_title, - border = popup_border, - borderchars = popup_borderchars, + border = popup_border.prompt, + borderchars = popup_borderchars.prompt, enter = true } |
