From bf77c5d2fab49cf932c9ebfc98be3b7ce2ac3bad Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Sat, 13 Nov 2021 11:15:07 +0000 Subject: [PATCH] feat: results scrolling actions (#1436) --- doc/telescope.txt | 15 ++++++++++++++- lua/telescope/actions/init.lua | 8 ++++++++ lua/telescope/actions/set.lua | 24 +++++++++++++++++++++++- lua/telescope/mappings.lua | 7 +++++++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/doc/telescope.txt b/doc/telescope.txt index 7f7f89f..8517b04 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -2190,7 +2190,20 @@ action_set.edit({prompt_bufnr}, {command}) *action_set.edit()* action_set.scroll_previewer({prompt_bufnr}, {direction}) *action_set.scroll_previewer()* - 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. + + + Parameters: ~ + {prompt_bufnr} (number) The prompt bufnr + {direction} (number) The direction of the scrolling + + +action_set.scroll_results({prompt_bufnr}, {direction}) *action_set.scroll_results()* + 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. Parameters: ~ 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 [""] = actions.preview_scrolling_up, [""] = actions.preview_scrolling_down, + [""] = actions.results_scrolling_up, + [""] = actions.results_scrolling_down, + [""] = actions.toggle_selection + actions.move_selection_worse, [""] = actions.toggle_selection + actions.move_selection_better, [""] = actions.send_to_qflist + actions.open_qflist, @@ -59,6 +62,10 @@ mappings.default_mappings = config.values.default_mappings [""] = actions.preview_scrolling_up, [""] = actions.preview_scrolling_down, + + [""] = actions.results_scrolling_up, + [""] = actions.results_scrolling_down, + ["?"] = actions.which_key, }, }