feat: option to include_extensions in builtin picker (#953)
- add option `include_extensions` which defaults to `false` - if `include_extensions` is `true` then add functions from extensions to results - update `actions.run_builtin` to check if extension function provided
This commit is contained in:
@@ -333,8 +333,17 @@ actions.run_builtin = function(prompt_bufnr)
|
|||||||
local entry = action_state.get_selected_entry(prompt_bufnr)
|
local entry = action_state.get_selected_entry(prompt_bufnr)
|
||||||
|
|
||||||
actions._close(prompt_bufnr, true)
|
actions._close(prompt_bufnr, true)
|
||||||
|
if string.match(entry.text," : ") then
|
||||||
|
-- Call appropriate function from extensions
|
||||||
|
local split_string = vim.split(entry.text," : ")
|
||||||
|
local ext = split_string[1]
|
||||||
|
local func = split_string[2]
|
||||||
|
require('telescope').extensions[ext][func]()
|
||||||
|
else
|
||||||
|
-- Call appropriate telescope builtin
|
||||||
require('telescope.builtin')[entry.text]()
|
require('telescope.builtin')[entry.text]()
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
actions.insert_symbol = function(prompt_bufnr)
|
actions.insert_symbol = function(prompt_bufnr)
|
||||||
local selection = action_state.get_selected_entry()
|
local selection = action_state.get_selected_entry()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ local internal = {}
|
|||||||
internal.builtin = function(opts)
|
internal.builtin = function(opts)
|
||||||
opts.hide_filename = utils.get_default(opts.hide_filename, true)
|
opts.hide_filename = utils.get_default(opts.hide_filename, true)
|
||||||
opts.ignore_filename = utils.get_default(opts.ignore_filename, true)
|
opts.ignore_filename = utils.get_default(opts.ignore_filename, true)
|
||||||
|
opts.include_extensions = utils.get_default(opts.include_extensions, false)
|
||||||
|
|
||||||
local objs = {}
|
local objs = {}
|
||||||
|
|
||||||
@@ -32,8 +33,23 @@ internal.builtin = function(opts)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local title = 'Telescope Builtin'
|
||||||
|
|
||||||
|
if opts.include_extensions then
|
||||||
|
title = 'Telescope Pickers'
|
||||||
|
for ext, funcs in pairs(require'telescope'.extensions) do
|
||||||
|
for func_name, func_obj in pairs(funcs) do
|
||||||
|
local debug_info = debug.getinfo(func_obj)
|
||||||
|
table.insert(objs, {
|
||||||
|
filename = string.sub(debug_info.source, 2),
|
||||||
|
text = string.format("%s : %s", ext, func_name),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
pickers.new(opts, {
|
pickers.new(opts, {
|
||||||
prompt_title = 'Telescope Builtin',
|
prompt_title = title,
|
||||||
finder = finders.new_table {
|
finder = finders.new_table {
|
||||||
results = objs,
|
results = objs,
|
||||||
entry_maker = function(entry)
|
entry_maker = function(entry)
|
||||||
|
|||||||
Reference in New Issue
Block a user