feat(actions): do not require 'default' action (#449)

main
bhagwan 2 years ago
parent 3ce5eaca0b
commit 86804f7462

@ -24,15 +24,18 @@ end
M.normalize_selected = function(actions, selected) M.normalize_selected = function(actions, selected)
-- 1. If there are no additional actions but the default -- 1. If there are no additional actions but the default
-- the selected table will contain the selected item(s) -- the selected table will contain the selected item(s)
-- 2. If multiple actions where defined the first item -- 2. If at least one non-default action was defined, our 'expect'
-- will contain the action keybind string -- function above sent fzf the '--expect` flag, from `man fzf`:
-- When this option is set, fzf will print the name of
-- the key pressed as the first line of its output (or
-- as the second line if --print-query is also used).
-- --
-- The below makes separates the keybind from the item(s) -- The below makes separates the keybind from the item(s)
-- and makes sure 'selected' contains only items or {} -- and makes sure 'selected' contains only items or {}
-- so it can always be enumerated safely -- so it can always be enumerated safely
if not actions or not selected then return end if not actions or not selected then return end
local action = _default_action local action = _default_action
if utils.tbl_length(actions)>1 then if utils.tbl_length(actions)>1 or not actions[_default_action] then
-- keybind should be in item #1 -- keybind should be in item #1
-- default keybind is an empty string -- default keybind is an empty string
-- so we leave that as "default" -- so we leave that as "default"
@ -62,9 +65,9 @@ M.act = function(actions, selected, opts)
action(entries, opts) action(entries, opts)
elseif type(action) == 'string' then elseif type(action) == 'string' then
vim.cmd(action) vim.cmd(action)
else elseif keybind ~= _default_action then
utils.warn(("unsupported action: '%s', type:%s") utils.warn(("unsupported action: '%s', type:%s")
:format(action, type(action))) :format(keybind, type(action)))
end end
end end

Loading…
Cancel
Save