summaryrefslogtreecommitdiff
path: root/lua/telescope/pickers.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-10-08 22:47:22 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-10-08 22:47:22 -0400
commit3cf3acc4d599c502d82848242a0cc0cf70a82845 (patch)
tree1ad34a6cfa593ce00dd0eba15e8536b5ba794fa4 /lua/telescope/pickers.lua
parent1222cc5b42b88b71f44d17928ef655da9de7cdf3 (diff)
feat: Add scroll_strategy = 'cycle'
Diffstat (limited to 'lua/telescope/pickers.lua')
-rw-r--r--lua/telescope/pickers.lua25
1 files changed, 20 insertions, 5 deletions
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 8d31686..bbc2e2c 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -83,6 +83,7 @@ function Picker:new(opts)
sorting_strategy = get_default(opts.sorting_strategy, config.values.sorting_strategy),
selection_strategy = get_default(opts.selection_strategy, config.values.selection_strategy),
+ scroll_strategy = get_default(opts.scroll_strategy, config.values.scroll_strategy),
get_window_options = opts.get_window_options,
layout_strategy = layout_strategy,
@@ -639,14 +640,28 @@ function Picker:reset_selection()
self.multi_select = {}
end
+function Picker:_handle_scroll_strategy(row)
+ if self.scroll_strategy == "cycle" then
+ if row >= self.max_results then
+ row = 0
+ elseif row < 0 then
+ row = self.max_results - 1
+ end
+ else
+ if row >= self.max_results then
+ row = self.max_results - 1
+ elseif row < 0 then
+ row = 0
+ end
+ end
+
+ return row
+end
+
function Picker:set_selection(row)
-- TODO: Loop around behavior?
-- TODO: Scrolling past max results
- if row >= self.max_results then
- row = self.max_results - 1
- elseif row < 0 then
- row = 0
- end
+ row = self:_handle_scroll_strategy(row)
if not self:can_select_row(row) then
log.debug("Cannot select row:", row, self.manager:num_results(), self.max_results)