From a3afb3561466045488ee8acbffa6db7ec92c5dc7 Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Tue, 27 Oct 2020 23:33:49 -0400 Subject: [PATCH] feat: Added some docs & validation --- README.md | 24 +++++++++++++++++++++ lua/telescope/config/resolve.lua | 18 ++++++++-------- lua/telescope/pickers/layout_strategies.lua | 21 +++++++++++++++++- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 086cdd9..e0892e4 100644 --- a/README.md +++ b/README.md @@ -372,6 +372,30 @@ Themes should work with every `telescope.builtin` function. If you wish to make theme, check out `lua/telescope/themes.lua`. If you need more features, make an issue :). +## Configuration + +### Display + +`Resolvable`: +1. 0 <= number < 1: + - This means total height as a percentage +2. 1 <= number: + - This means total height as a fixed number +3. function(picker, columns, lines): + - returns one of the above options + - `return max.min(110, max_rows * .5)` + +```lua +layout_strategies.horizontal = function(self, max_columns, max_lines) + local layout_config = validate_layout_config(self.layout_config or {}, { + width_padding = "How many cells to pad the width", + height_padding = "How many cells to pad the height", + preview_width = "(Resolvable): Determine preview width", + }) + ... +end +``` + ## Goals ### Pipeline Different Objects diff --git a/lua/telescope/config/resolve.lua b/lua/telescope/config/resolve.lua index 7c7ee6d..464bffb 100644 --- a/lua/telescope/config/resolve.lua +++ b/lua/telescope/config/resolve.lua @@ -32,19 +32,13 @@ Result of `resolve` should be a table with: !!NOT IMPLEMENTED YET!! height = - 1. pass between 0 & 1 + 1. 0 <= number < 1 This means total height as a percentage - 2. pass a number > 1 + 2. 1 <= number This means total height as a fixed number - 3. { - previewer = x, - results = x, - prompt = x, - }, this means I do my best guess I can for these, given your options - - 4. function(max_rows) + 3. function(picker, columns, lines) -> returns one of the above options return max.min(110, max_rows * .5) @@ -54,6 +48,12 @@ height = return 0.6 end + 3. { + previewer = x, + results = x, + prompt = x, + }, this means I do my best guess I can for these, given your options + width = exactly the same, but switch to width diff --git a/lua/telescope/pickers/layout_strategies.lua b/lua/telescope/pickers/layout_strategies.lua index 390c748..adf22ca 100644 --- a/lua/telescope/pickers/layout_strategies.lua +++ b/lua/telescope/pickers/layout_strategies.lua @@ -33,6 +33,21 @@ local is_borderless = function(opts) return opts.window.border == false end + +local function validate_layout_config(options, values) + for k, _ in pairs(options) do + if not values[k] then + error(string.format( + "Unsupported layout_config key: %s\n%s", + k, + vim.inspect(values) + )) + end + end + + return options +end + local layout_strategies = {} --[[ @@ -46,7 +61,11 @@ local layout_strategies = {} +-----------------+---------------------+ --]] layout_strategies.horizontal = function(self, max_columns, max_lines) - local layout_config = self.layout_config or {} + local layout_config = validate_layout_config(self.layout_config or {}, { + width_padding = "How many cells to pad the width", + height_padding = "How many cells to pad the height", + preview_width = "(Resolvable): Determine preview width", + }) local initial_options = self:_get_initial_window_options() local preview = initial_options.preview