feat: define scroll speed + smart_send to qflist (#610)

* smart send to qflist

* Previewer scrolling for half window height

* Start doing cleanup in readme

* feat: add ability to define the scrolling speed

* move scrolling action to action.set

* docs: added more docs for actions

* [docgen] Update doc/telescope.txt
skip-checks: true

Co-authored-by: Simon Hauser <Simon-Hauser@outlook.de>
Co-authored-by: Github Actions <actions@github>
This commit is contained in:
elianiva
2021-03-05 20:13:48 +07:00
committed by GitHub
parent 8369acea3e
commit 6e941e0ece
5 changed files with 45 additions and 22 deletions

View File

@@ -144,13 +144,11 @@ function actions.toggle_selection(prompt_bufnr)
end
function actions.preview_scrolling_up(prompt_bufnr)
-- TODO: Make number configurable.
action_state.get_current_picker(prompt_bufnr).previewer:scroll_fn(-30)
action_set.scroll_previewer(prompt_bufnr, -1)
end
function actions.preview_scrolling_down(prompt_bufnr)
-- TODO: Make number configurable.
action_state.get_current_picker(prompt_bufnr).previewer:scroll_fn(30)
action_set.scroll_previewer(prompt_bufnr, 1)
end
function actions.center(_)
@@ -413,6 +411,16 @@ actions.send_to_qflist = function(prompt_bufnr)
vim.fn.setqflist(qf_entries, 'r')
end
actions.smart_send_to_qflist = function(prompt_bufnr)
local picker = action_state.get_current_picker(prompt_bufnr)
if table.getn(picker:get_multi_selection()) > 0 then
actions.send_selected_to_qflist(prompt_bufnr)
else
actions.send_to_qflist(prompt_bufnr)
end
end
--- Open the quickfix list
actions.open_qflist = function(_)
vim.cmd [[copen]]
end

View File

@@ -2,6 +2,7 @@ local a = vim.api
local log = require('telescope.log')
local path = require('telescope.path')
local state = require('telescope.state')
local action_state = require('telescope.actions.state')
@@ -124,6 +125,18 @@ set.edit = function(prompt_bufnr, command)
end
end
--- Scrolls the previewer up or down
---@param prompt_bufnr number: The prompt bufnr
---@param direction number: The direction of the scrolling
-- Valid directions include: "1", "-1"
set.scroll_previewer = function (prompt_bufnr, direction)
local status = state.get_status(prompt_bufnr)
local default_speed = vim.api.nvim_win_get_height(status.preview_win) / 2
local speed = status.picker.layout_config.scroll_speed or default_speed
action_state.get_current_picker(prompt_bufnr).previewer:scroll_fn(math.floor(speed * direction))
end
-- ==================================================
-- Transforms modules and sets the corect metatables.
-- ==================================================