diff --git a/doc/telescope.txt b/doc/telescope.txt index f6ff20e..8fc81c0 100644 --- a/doc/telescope.txt +++ b/doc/telescope.txt @@ -1406,8 +1406,11 @@ builtin.keymaps({opts}) *telescope.builtin.keymaps()* true) {only_buf} (boolean) if true, only show the buffer-local keymaps (default: false) - {lhs_filter} (function) filter(lhs:string) -> boolean. true if the - keymap should be shown (optional) + {lhs_filter} (function) filter(lhs:string) -> boolean. true for + keymap.lhs if the keymap should be shown + (optional) + {filter} (function) filter(km:keymap) -> boolean. true for the + keymap if it should be shown (optional) builtin.filetypes({opts}) *telescope.builtin.filetypes()* diff --git a/lua/telescope/builtin/__internal.lua b/lua/telescope/builtin/__internal.lua index bec1cf5..c391409 100644 --- a/lua/telescope/builtin/__internal.lua +++ b/lua/telescope/builtin/__internal.lua @@ -1129,7 +1129,6 @@ internal.registers = function(opts) :find() end --- TODO: make filtering include the mapping and the action internal.keymaps = function(opts) opts.modes = vim.F.if_nil(opts.modes, { "n", "i", "c", "x" }) opts.show_plug = vim.F.if_nil(opts.show_plug, true) @@ -1148,6 +1147,7 @@ internal.keymaps = function(opts) if (opts.show_plug or not string.find(keymap.lhs, "")) and (not opts.lhs_filter or opts.lhs_filter(keymap.lhs)) + and (not opts.filter or opts.filter(keymap)) then table.insert(keymaps_table, keymap) max_len_lhs = math.max(max_len_lhs, #utils.display_termcodes(keymap.lhs)) diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index 50366c1..a2cdd9e 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -353,7 +353,8 @@ builtin.registers = require_on_exported_call("telescope.builtin.__internal").reg ---@field modes table: a list of short-named keymap modes to search (default: { "n", "i", "c", "x" }) ---@field show_plug boolean: if true, the keymaps for which the lhs contains "" are also shown (default: true) ---@field only_buf boolean: if true, only show the buffer-local keymaps (default: false) ----@field lhs_filter function: filter(lhs:string) -> boolean. true if the keymap should be shown (optional) +---@field lhs_filter function: filter(lhs:string) -> boolean. true for keymap.lhs if the keymap should be shown (optional) +---@field filter function: filter(km:keymap) -> boolean. true for the keymap if it should be shown (optional) builtin.keymaps = require_on_exported_call("telescope.builtin.__internal").keymaps --- Lists all available filetypes, sets currently open buffer's filetype to selected filetype in Telescope on ``