summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorReid Swan <reidswan@outlook.com>2023-01-30 23:06:16 +0200
committerGitHub <noreply@github.com>2023-01-30 22:06:16 +0100
commit19ce7f8f24d6cb0d2930ce1eb3096ff14c94fa68 (patch)
tree04b886e2ddfcd984c77166e140aa2b004b8a5af1 /lua
parent5dfd807771dbd68b1b776e489c043337baccf638 (diff)
feat: add support for wrapping history on reaching history begin or end (#2349)
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/actions/history.lua10
-rw-r--r--lua/telescope/config.lua34
2 files changed, 30 insertions, 14 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)
diff --git a/lua/telescope/config.lua b/lua/telescope/config.lua
index 9706933..1c573ba 100644
--- a/lua/telescope/config.lua
+++ b/lua/telescope/config.lua
@@ -454,6 +454,7 @@ append(
handler = function(...)
return require("telescope.actions.history").get_simple_history(...)
end,
+ cycle_wrap = false,
},
[[
This field handles the configuration for prompt history.
@@ -469,20 +470,25 @@ append(
},
Fields:
- - path: The path to the telescope history as string.
- Default: stdpath("data")/telescope_history
- - limit: The amount of entries that will be written in the
- history.
- Warning: If limit is set to nil it will grow unbound.
- Default: 100
- - handler: A lua function that implements the history.
- This is meant as a developer setting for extensions to
- override the history handling, e.g.,
- https://github.com/nvim-telescope/telescope-smart-history.nvim,
- which allows context sensitive (cwd + picker) history.
-
- Default:
- require('telescope.actions.history').get_simple_history]]
+ - path: The path to the telescope history as string.
+ Default: stdpath("data")/telescope_history
+ - limit: The amount of entries that will be written in the
+ history.
+ Warning: If limit is set to nil it will grow unbound.
+ Default: 100
+ - handler: A lua function that implements the history.
+ This is meant as a developer setting for extensions to
+ override the history handling, e.g.,
+ https://github.com/nvim-telescope/telescope-smart-history.nvim,
+ which allows context sensitive (cwd + picker) history.
+
+ Default:
+ require('telescope.actions.history').get_simple_history
+ - cycle_wrap: Indicates whether the cycle_history_next and
+ cycle_history_prev functions should wrap around to the
+ beginning or end of the history entries on reaching
+ their respective ends
+ Default: false]]
)
append(