diff --git a/lua/git-dev/pickers/init.lua b/lua/git-dev/pickers/init.lua index 38985bf..ac11b70 100644 --- a/lua/git-dev/pickers/init.lua +++ b/lua/git-dev/pickers/init.lua @@ -29,13 +29,15 @@ local P = { end, -- Action on selection select_entry = function(entry) - if entry then - require("git-dev").open( - entry.args.repo, - entry.args.ref, - entry.args.opts - ) - end + vim.schedule(function() + if entry then + require("git-dev").open( + entry.args.repo, + entry.args.ref, + entry.args.opts + ) + end + end) end, -- An array of an entry text parts label_parts = function(entry) diff --git a/lua/git-dev/pickers/mini.lua b/lua/git-dev/pickers/mini.lua index 78a93ac..9f242cb 100644 --- a/lua/git-dev/pickers/mini.lua +++ b/lua/git-dev/pickers/mini.lua @@ -12,7 +12,10 @@ function pickers.history(local_opts) source = { name = config.title, items = config.get_entries, - choose = config.select_entry, + choose = function(item) + minipick.stop() + config.select_entry(item) + end, show = function(buf_id, items) local widths = picker_utils.normalize_width( vim.fn.winwidth(0), -- should deduct separator width diff --git a/lua/git-dev/pickers/snacks.lua b/lua/git-dev/pickers/snacks.lua index 509e4a9..72ea2da 100644 --- a/lua/git-dev/pickers/snacks.lua +++ b/lua/git-dev/pickers/snacks.lua @@ -13,7 +13,10 @@ function pickers.history(local_opts) source = "git-dev", title = config.title, items = config.get_entries(), - confirm = function(_, item) + confirm = function(picker, item) + if picker then + picker:close() + end config.select_entry(item) end, format = function(item, p)