summaryrefslogtreecommitdiff
path: root/lua/telescope/actions/history.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/telescope/actions/history.lua')
-rw-r--r--lua/telescope/actions/history.lua10
1 files changed, 10 insertions, 0 deletions
diff --git a/lua/telescope/actions/history.lua b/lua/telescope/actions/history.lua
index cfb1b72..9d7efc4 100644
--- a/lua/telescope/actions/history.lua
+++ b/lua/telescope/actions/history.lua
@@ -53,6 +53,7 @@ local histories = {}
---@field limit string: Will have the limit of the history. Can be nil, if limit is disabled.
---@field content table: History table. Needs to be filled by your own History implementation
---@field index number: Used to keep track of the next or previous index. Default is #content + 1
+---@field cycle_wrap boolean: Controls if history will wrap on reaching beginning or end
histories.History = {}
histories.History.__index = histories.History
@@ -75,6 +76,7 @@ function histories.History:new(opts)
obj.path = vim.fn.expand(conf.history.path)
obj.content = {}
obj.index = 1
+ obj.cycle_wrap = conf.history.cycle_wrap
opts.init(obj)
obj._reset = opts.reset
@@ -125,6 +127,10 @@ function histories.History:get_next(line, picker)
end
local next_idx = self.index + 1
+ if next_idx > #self.content and self.cycle_wrap then
+ next_idx = 1
+ end
+
if next_idx <= #self.content then
self.index = next_idx
return self.content[next_idx]
@@ -150,6 +156,10 @@ function histories.History:get_prev(line, picker)
end
local next_idx = self.index - 1
+ if next_idx < 1 and self.cycle_wrap then
+ next_idx = #self.content
+ end
+
if self.index == #self.content + 1 then
if line ~= "" then
self:append(line, picker, true)