diff options
| author | Dave Lage <rockerboo@gmail.com> | 2020-09-15 14:54:29 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-15 14:54:29 -0400 |
| commit | 15d3cac7b17c0a44697affc42bd41c576e538e74 (patch) | |
| tree | 5a78e6eb30e0f42d0f55da930dd4fcaa92da75e0 /lua/telescope/pickers | |
| parent | 6ffa3c24b3b46d3ce789bae799b17d1a369dec3f (diff) | |
feat: Themes (#79)
Big shoutout to @rockerBOO for the idea and basically all the impl!
* feat: Add dropdown layout strategy
* Adding more docs. Working better with options
* Refactor borders
* Fix for spaces
* Add preview to layout. Add Themes.
* feat: themes
Co-authored-by: TJ DeVries <devries.timothyj@gmail.com>
Diffstat (limited to 'lua/telescope/pickers')
| -rw-r--r-- | lua/telescope/pickers/layout_strategies.lua | 92 |
1 files changed, 88 insertions, 4 deletions
diff --git a/lua/telescope/pickers/layout_strategies.lua b/lua/telescope/pickers/layout_strategies.lua index b8fe6d1..5f25511 100644 --- a/lua/telescope/pickers/layout_strategies.lua +++ b/lua/telescope/pickers/layout_strategies.lua @@ -1,6 +1,32 @@ +--[[ + +Layout strategies are different functions to position telescope. + +horizontal: +- Supports `prompt_position`, `preview_cutoff` + +vertical: + +flex: Swap between `horizontal` and `vertical` strategies based on the window width +- Supports `vertical` or `horizontal` features + +dropdown: -local layout_strategies = {} +Layout strategies are callback functions + +-- @param self: Picker +-- @param columns: number Columns in the vim window +-- @param lines: number Lines in the vim window +-- @param prompt_title: string +function(self, columns, lines, prompt_title) +end + +--]] + +local layout_strategies = {} +local log = require("telescope.log") +local resolve = require("telescope.config.resolve") --[[ +-----------------+---------------------+ | | | @@ -19,7 +45,6 @@ layout_strategies.horizontal = function(self, max_columns, max_lines, prompt_tit -- TODO: Test with 120 width terminal -- TODO: Test with self.width - local width_padding = 10 -- TODO: Determine config settings. @@ -40,6 +65,7 @@ layout_strategies.horizontal = function(self, max_columns, max_lines, prompt_tit end local other_width = max_columns - preview.width - (2 * width_padding) + results.width = other_width prompt.width = other_width @@ -80,11 +106,69 @@ layout_strategies.horizontal = function(self, max_columns, max_lines, prompt_tit return { preview = preview.width > 0 and preview, results = results, - prompt = prompt, - } + prompt = prompt +} +end + +--[[ + +-----------------+ + | Prompt | + +-----------------+ + | Result | + | Result | + | Result | + +-----------------+ +--]] + +-- Check if there are any borders. Right now it's a little raw as +-- there are a few things that contribute to the border +local is_borderless = function(opts) + if opts.window.border == false then return true end end +layout_strategies.center = function(self, columns, lines, prompt_title) + local initial_options = self:_get_initial_window_options(prompt_title) + local preview = initial_options.preview + local results = initial_options.results + local prompt = initial_options.prompt + + local max_results = self.max_results or 15 + local width = self.width or 70 + + local max_width = (width > columns and columns or width) + + prompt.height = 1 + results.height = max_results + + prompt.width = max_width + results.width = max_width + preview.width = max_width + local bs = 1 -- border size + + if is_borderless(self) then bs = 0 end + + prompt.line = (lines / 2) - ((max_results + (bs * 2)) / 2) + results.line = prompt.line + prompt.height + (bs * 2) + + preview.line = 1 + preview.height = math.floor(prompt.line - 2) + + if not self.previewer or columns < self.preview_cutoff then + preview.height = 0 + end + + -- Get left column, after centering, appling the width, and the border size + results.col = (columns / 2) - (width / 2) + (bs * 2) + prompt.col = results.col + preview.col = results.col + + return { + preview = self.previewer and preview, + results = results, + prompt = prompt + } +end --[[ +-----------------+ |
