diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/telescope/actions/history.lua | 10 | ||||
| -rw-r--r-- | lua/telescope/config.lua | 34 |
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( |
