diff options
| author | Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> | 2021-11-13 11:15:07 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-13 11:15:07 +0000 |
| commit | bf77c5d2fab49cf932c9ebfc98be3b7ce2ac3bad (patch) | |
| tree | 1a568b4e3d177dca703faa978262fd31deaea765 /lua | |
| parent | 3d45c6c55537c8c95a6b2ea8653f5a491131def7 (diff) | |
feat: results scrolling actions (#1436)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/telescope/actions/init.lua | 8 | ||||
| -rw-r--r-- | lua/telescope/actions/set.lua | 24 | ||||
| -rw-r--r-- | lua/telescope/mappings.lua | 7 |
3 files changed, 38 insertions, 1 deletions
diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua index 5ff24cb..e87bac6 100644 --- a/lua/telescope/actions/init.lua +++ b/lua/telescope/actions/init.lua @@ -152,6 +152,14 @@ function actions.preview_scrolling_down(prompt_bufnr) action_set.scroll_previewer(prompt_bufnr, 1) end +function actions.results_scrolling_up(prompt_bufnr) + action_set.scroll_results(prompt_bufnr, -1) +end + +function actions.results_scrolling_down(prompt_bufnr) + action_set.scroll_results(prompt_bufnr, 1) +end + function actions.center(_) vim.cmd ":normal! zz" end diff --git a/lua/telescope/actions/set.lua b/lua/telescope/actions/set.lua index 320addd..b7170db 100644 --- a/lua/telescope/actions/set.lua +++ b/lua/telescope/actions/set.lua @@ -143,7 +143,9 @@ action_set.edit = function(prompt_bufnr, command) end end ---- Scrolls the previewer up or down +--- Scrolls the previewer up or down. +--- Defaults to a half page scroll, but can be overridden using the `scroll_speed` +--- option in `layout_config`. See |telescope.layout| for more details. ---@param prompt_bufnr number: The prompt bufnr ---@param direction number: The direction of the scrolling -- Valid directions include: "1", "-1" @@ -162,6 +164,26 @@ action_set.scroll_previewer = function(prompt_bufnr, direction) previewer:scroll_fn(math.floor(speed * direction)) end +--- Scrolls the results up or down. +--- Defaults to a half page scroll, but can be overridden using the `scroll_speed` +--- option in `layout_config`. See |telescope.layout| for more details. +---@param prompt_bufnr number: The prompt bufnr +---@param direction number: The direction of the scrolling +-- Valid directions include: "1", "-1" +action_set.scroll_results = function(prompt_bufnr, direction) + local status = state.get_status(prompt_bufnr) + local default_speed = vim.api.nvim_win_get_height(status.results_win) / 2 + local speed = status.picker.layout_config.scroll_speed or default_speed + + local input = direction > 0 and [[]] or [[]] + + vim.api.nvim_win_call(status.results_win, function() + vim.cmd([[normal! ]] .. math.floor(speed) .. input) + end) + + action_set.shift_selection(prompt_bufnr, math.floor(speed) * direction) +end + -- ================================================== -- Transforms modules and sets the corect metatables. -- ================================================== diff --git a/lua/telescope/mappings.lua b/lua/telescope/mappings.lua index 08bc3bb..27e5d07 100644 --- a/lua/telescope/mappings.lua +++ b/lua/telescope/mappings.lua @@ -25,6 +25,9 @@ mappings.default_mappings = config.values.default_mappings ["<C-u>"] = actions.preview_scrolling_up, ["<C-d>"] = actions.preview_scrolling_down, + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, @@ -59,6 +62,10 @@ mappings.default_mappings = config.values.default_mappings ["<C-u>"] = actions.preview_scrolling_up, ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + ["?"] = actions.which_key, }, } |
