diff --git a/doc/artio.txt b/doc/artio.txt index 47beeba..16f5731 100644 --- a/doc/artio.txt +++ b/doc/artio.txt @@ -335,6 +335,12 @@ builtins.keymaps() *artio-keymaps* Plug: `(artio-keymaps)`. +builtins.commands() *artio-commands* + + list all user commands. uses formatted data from |nvim_get_commands()|. + + Plug: `(artio-commands)`. + builtins.quickfix() *artio-quickfix* show current quickfix list. allows previewing items and updating the list. diff --git a/lua/artio/builtins.lua b/lua/artio/builtins.lua index f20d45c..0c464f6 100644 --- a/lua/artio/builtins.lua +++ b/lua/artio/builtins.lua @@ -607,6 +607,36 @@ builtins.keymaps = function(props) ) end +builtins.commands = function(props) + props = props or {} + local lst = vim.api.nvim_get_commands({}) + + return artio.generic( + vim.tbl_values(lst), + extend({ + prompt = "commands", + ---@param item vim.api.keyset.command_info + format_item = function(item) + return item.name + end, + ---@param cmd vim.api.keyset.command_info + on_close = function(cmd, _) + local nargs = vim.F.npcall(tonumber, cmd.nargs) + local fmt = (nargs and nargs > 0) and ":%s " or ":%s" + + artio.schedule(function() + vim.api.nvim_feedkeys(string.format(fmt, cmd.name), "n", false) + end) + end, + hl_item = function(item) + return { + { { 0, #item.v.name }, "@function.macro.vim" }, + } + end, + }, props) + ) +end + builtins.quickfix = function(props) props = props or {} diff --git a/plugin/artio.lua b/plugin/artio.lua index dac40c1..f5bc4db 100644 --- a/plugin/artio.lua +++ b/plugin/artio.lua @@ -100,6 +100,9 @@ end) vim.keymap.set("n", "(artio-keymaps)", function() return require("artio.builtins").keymaps() end) +vim.keymap.set("n", "(artio-commands)", function() + return require("artio.builtins").commands() +end) vim.keymap.set("n", "(artio-quickfix)", function() return require("artio.builtins").quickfix() end)