diff --git a/lua/snacks/picker/actions.lua b/lua/snacks/picker/actions.lua index b05aad05c..e0067b66d 100644 --- a/lua/snacks/picker/actions.lua +++ b/lua/snacks/picker/actions.lua @@ -152,18 +152,24 @@ function M.toggle_preview(picker) end function M.pick_win(picker, item, action) - picker.layout:hide() + if not picker.layout.split then + picker.layout:hide() + end local win = Snacks.picker.util.pick_win({ main = picker.main }) if not win then - picker.layout:unhide() + if not picker.layout.split then + picker.layout:unhide() + end return true end picker.main = win - vim.defer_fn(function() - if not picker.closed then - picker.layout:unhide() - end - end, 100) + if not picker.layout.split then + vim.defer_fn(function() + if not picker.closed then + picker.layout:unhide() + end + end, 100) + end end function M.bufdelete(picker) diff --git a/lua/snacks/picker/config/defaults.lua b/lua/snacks/picker/config/defaults.lua index 224e71f4a..220ff00f2 100644 --- a/lua/snacks/picker/config/defaults.lua +++ b/lua/snacks/picker/config/defaults.lua @@ -238,6 +238,7 @@ local defaults = { [""] = "confirm", [""] = "list_down", [""] = "close", + [""] = { { "pick_win", "jump" } }, [""] = { "select_and_prev", mode = { "n", "x" } }, [""] = "list_scroll_wheel_down", [""] = "list_scroll_wheel_up", diff --git a/lua/snacks/picker/util/init.lua b/lua/snacks/picker/util/init.lua index 45f5cdbf8..558ae5441 100644 --- a/lua/snacks/picker/util/init.lua +++ b/lua/snacks/picker/util/init.lua @@ -372,7 +372,8 @@ function M.pick_win(opts) local chars = "asdfghjkl" local wins = {} ---@type number[] for _, win in ipairs(vim.api.nvim_list_wins()) do - if vim.api.nvim_win_get_config(win).relative == "" then + local buf = vim.api.nvim_win_get_buf(win) + if vim.api.nvim_win_get_config(win).relative == "" and not vim.bo[buf].filetype:find("^snacks") then wins[#wins + 1] = win end end