summaryrefslogtreecommitdiff
path: root/lua/telescope/builtin/__internal.lua
diff options
context:
space:
mode:
authorkkharji <kkharji@protonmail.com>2022-11-23 19:26:29 +0300
committerGitHub <noreply@github.com>2022-11-23 17:26:29 +0100
commit5e16fbc8eac42280ae6e18ca38098a833c5e08ba (patch)
tree48c8ad555ee385302d0f1be6a8d4501e3a28d7c7 /lua/telescope/builtin/__internal.lua
parent7a4ffef931769c3fe7544214ed7ffde5852653f6 (diff)
feat(picker): command history filter (#2132)
* feat(picker): command history filter I've recently start using command history. For sometime was a bit annoyed of unrelevant commands like edit/write and others (most likely only used once) I've considered using lua patterns, however, logical `or` isn't a thing. Additionally, passing a list of lua patterns and checking each pattern for each command history entry felt tedious. This PR introduce a new optional function to filter command history items. For example, in my configurations ~~~lua local command_history_ignore = vim.regex "edit\\|Move\\|write\\|Write\\|e\\s\\|lua\\sI(" overrides.command_history = minimal { prompt_prefix = "CMDHistory> ", filter_fn = function(item) if #item < 3 then return false else return not command_history_ignore:match_str(item) end end, } ~~~ * [docgen] Update doc/telescope.txt skip-checks: true Co-authored-by: Github Actions <actions@github>
Diffstat (limited to 'lua/telescope/builtin/__internal.lua')
-rw-r--r--lua/telescope/builtin/__internal.lua12
1 files changed, 11 insertions, 1 deletions
diff --git a/lua/telescope/builtin/__internal.lua b/lua/telescope/builtin/__internal.lua
index 9b6931d..d0f32a3 100644
--- a/lua/telescope/builtin/__internal.lua
+++ b/lua/telescope/builtin/__internal.lua
@@ -542,10 +542,20 @@ internal.command_history = function(opts)
local history_list = vim.split(history_string, "\n")
local results = {}
+ local filter_fn = opts.filter_fn
+
for i = #history_list, 3, -1 do
local item = history_list[i]
local _, finish = string.find(item, "%d+ +")
- table.insert(results, string.sub(item, finish + 1))
+ local cmd = string.sub(item, finish + 1)
+
+ if filter_fn then
+ if filter_fn(cmd) then
+ table.insert(results, cmd)
+ end
+ else
+ table.insert(results, cmd)
+ end
end
pickers