diff --git a/lua/telescope/builtin.lua b/lua/telescope/builtin.lua index c4b7cb2..1c3c629 100644 --- a/lua/telescope/builtin.lua +++ b/lua/telescope/builtin.lua @@ -56,6 +56,55 @@ builtin.git_files = function(opts) }):find() end +builtin.commands = function() + pickers.new({}, { + prompt = 'Commands', + finder = finders.new_table { + results = (function() + local command_iter = vim.api.nvim_get_commands({}) + local commands = {} + + for _, cmd in pairs(command_iter) do + table.insert(commands, cmd) + end + + return commands + end)(), + entry_maker = function(line) + return { + valid = line ~= "", + entry_type = make_entry.types.GENERIC, + value = line, + ordinal = line.name, + display = line.name + } + end + }, + sorter = sorters.get_generic_fuzzy_sorter(), + attach_mappings = function(prompt_bufnr, map) + local run_command = function() + local selection = actions.get_selected_entry(prompt_bufnr) + actions.close(prompt_bufnr) + local val = selection.value + local cmd = string.format([[:%s ]], val.name) + + if val.nargs == "0" then + vim.cmd(cmd) + else + vim.cmd [[stopinsert]] + vim.fn.feedkeys(cmd) + end + + end + + map('i', '', run_command) + map('n', '', run_command) + + return true + end + }):find() +end + builtin.live_grep = function(opts) opts = opts or {} diff --git a/lua/telescope/make_entry.lua b/lua/telescope/make_entry.lua index 35fef98..3ae4de5 100644 --- a/lua/telescope/make_entry.lua +++ b/lua/telescope/make_entry.lua @@ -70,7 +70,7 @@ function make_entry.gen_from_file(opts) entry_type = make_entry.types.FILE, filename = line, - path = cwd .. '/' .. line, + path = cwd .. utils.get_separator() .. line, } entry.display = make_display(line) diff --git a/lua/telescope/utils.lua b/lua/telescope/utils.lua index 6154889..fb7d48b 100644 --- a/lua/telescope/utils.lua +++ b/lua/telescope/utils.lua @@ -138,4 +138,8 @@ function utils.make_default_callable(f, default_opts) }) end +function utils.get_separator() + return package.config:sub(1, 1) +end + return utils