-- vim.ui.select() を使ってありすえ式アクションを実行する -- ありすえ式アクションとは <Plug>%((%a+)%-action%-([a-z:%-]+)%) にマッチするノーマルモードのマッピングである -- 例: <Plug>(gin-action-fixup:instant-fixup) local eval = vim.eval or vim.api.nvim_eval local plug = eval([["\<Plug>"]]) local function find_actions(plugin) local pattern = '<Plug>%(' .. plugin .. '%-action%-([a-z:%-]+)%)' local actions = {} for action in string.gmatch(vim.fn.execute('nnoremap'), pattern) do -- dedupe actions[action] = true end local actionlist = {} for action, _ in pairs(actions) do table.insert(actionlist, action) end table.sort(actionlist) return actionlist end local function select_action(plugin) local actions = find_actions(plugin) vim.ui.select(actions, {}, function(item, idx) if item == nil then return end vim.fn.feedkeys(plug .. '(' .. plugin .. '-action-' .. item .. ')', 'n') end) end return select_action