summaryrefslogtreecommitdiff
path: root/lua/telescope/actions/init.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2021-02-27 15:06:04 -0500
committerGitHub <noreply@github.com>2021-02-27 21:06:04 +0100
commit11674ac021e39f92eb51d2884904b0300c5133a3 (patch)
treeced317f650b35b9ea7466097a730f76740de1725 /lua/telescope/actions/init.lua
parentca92ec1a830a61a0b88fff925f2146ab46e0f7c9 (diff)
feat: multi selection. Only integrates with send_selected_to_qflist (#551)
This will not yet work with select actions. More work is needed in that case. Co-authored-by: Simon Hauser <Simon-Hauser@outlook.de>
Diffstat (limited to 'lua/telescope/actions/init.lua')
-rw-r--r--lua/telescope/actions/init.lua41
1 files changed, 37 insertions, 4 deletions
diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua
index 2fa7ce2..79bcb23 100644
--- a/lua/telescope/actions/init.lua
+++ b/lua/telescope/actions/init.lua
@@ -1,4 +1,11 @@
--- Actions functions that are useful for people creating their own mappings.
+---@tag telescope.actions
+
+-- TODO: Add @module to make it so we can have the prefix.
+--@module telescope.actions
+
+---@brief [[
+--- Actions functions that are useful for people creating their own mappings.
+---@brief ]]
local a = vim.api
@@ -40,7 +47,6 @@ local action_is_deprecated = function(name, err)
)
end
---- Get the current entry
function actions.get_selected_entry()
-- TODO(1.0): Remove
action_is_deprecated("get_selected_entry")
@@ -53,7 +59,6 @@ function actions.get_current_line()
return action_state.get_current_line()
end
---- Get the current picker object for the prompt
function actions.get_current_picker(prompt_bufnr)
-- TODO(1.0): Remove
action_is_deprecated("get_current_picker")
@@ -61,15 +66,33 @@ function actions.get_current_picker(prompt_bufnr)
end
--- Move the selection to the next entry
+---@param prompt_bufnr number: The prompt bufnr
function actions.move_selection_next(prompt_bufnr)
action_set.shift_selection(prompt_bufnr, 1)
end
--- Move the selection to the previous entry
+---@param prompt_bufnr number: The prompt bufnr
function actions.move_selection_previous(prompt_bufnr)
action_set.shift_selection(prompt_bufnr, -1)
end
+--- Move the selection to the entry that has a worse score
+---@param prompt_bufnr number: The prompt bufnr
+function actions.move_selection_worse(prompt_bufnr)
+ local picker = action_state.get_current_picker(prompt_bufnr)
+ action_set.shift_selection(prompt_bufnr, p_scroller.worse(picker.sorting_strategy))
+end
+
+--- Move the selection to the entry that has a better score
+---@param prompt_bufnr number: The prompt bufnr
+function actions.move_selection_better(prompt_bufnr)
+ local picker = action_state.get_current_picker(prompt_bufnr)
+ action_set.shift_selection(prompt_bufnr, p_scroller.better(picker.sorting_strategy))
+end
+
+--- Move to the top of the picker
+---@param prompt_bufnr number: The prompt bufnr
function actions.move_to_top(prompt_bufnr)
local current_picker = actions.get_current_picker(prompt_bufnr)
current_picker:set_selection(p_scroller.top(current_picker.sorting_strategy,
@@ -78,6 +101,8 @@ function actions.move_to_top(prompt_bufnr)
))
end
+--- Move to the middle of the picker
+---@param prompt_bufnr number: The prompt bufnr
function actions.move_to_middle(prompt_bufnr)
local current_picker = actions.get_current_picker(prompt_bufnr)
current_picker:set_selection(p_scroller.middle(
@@ -87,6 +112,8 @@ function actions.move_to_middle(prompt_bufnr)
))
end
+--- Move to the bottom of the picker
+---@param prompt_bufnr number: The prompt bufnr
function actions.move_to_bottom(prompt_bufnr)
local current_picker = actions.get_current_picker(prompt_bufnr)
current_picker:set_selection(p_scroller.bottom(current_picker.sorting_strategy,
@@ -95,16 +122,22 @@ function actions.move_to_bottom(prompt_bufnr)
))
end
+--- Add current entry to multi select
+---@param prompt_bufnr number: The prompt bufnr
function actions.add_selection(prompt_bufnr)
local current_picker = action_state.get_current_picker(prompt_bufnr)
current_picker:add_selection(current_picker:get_selection_row())
end
+--- Remove current entry from multi select
+---@param prompt_bufnr number: The prompt bufnr
function actions.remove_selection(prompt_bufnr)
local current_picker = action_state.get_current_picker(prompt_bufnr)
current_picker:remove_selection(current_picker:get_selection_row())
end
+--- Toggle current entry status for multi select
+---@param prompt_bufnr number: The prompt bufnr
function actions.toggle_selection(prompt_bufnr)
local current_picker = action_state.get_current_picker(prompt_bufnr)
current_picker:toggle_selection(current_picker:get_selection_row())
@@ -357,7 +390,7 @@ actions.send_selected_to_qflist = function(prompt_bufnr)
local picker = action_state.get_current_picker(prompt_bufnr)
local qf_entries = {}
- for entry in pairs(picker.multi_select) do
+ for _, entry in ipairs(picker:get_multi_selection()) do
table.insert(qf_entries, entry_to_qf(entry))
end