From 8679236f51190f7ea37091f77e4ef5e6320598c0 Mon Sep 17 00:00:00 2001 From: robin Date: Mon, 2 Mar 2026 12:17:48 +0100 Subject: [PATCH] feat(builtins): add `commands` builtin --- doc/artio.txt | 6 ++++++ lua/artio/builtins.lua | 30 ++++++++++++++++++++++++++++++ plugin/artio.lua | 3 +++ 3 files changed, 39 insertions(+) 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) -- 2.51.2