mirror of
https://github.com/folke/snacks.nvim
synced 2025-08-04 18:58:12 +00:00
feat(picker): added edit_win
action bound to ctrl+enter
to pick a window and edit
This commit is contained in:
parent
940b8844df
commit
2ba5be8491
3 changed files with 38 additions and 0 deletions
|
@ -117,6 +117,42 @@ function M.toggle_preview(picker)
|
|||
picker:show_preview()
|
||||
end
|
||||
|
||||
function M.edit_win(picker, item, action)
|
||||
local overlays = {} ---@type snacks.win[]
|
||||
picker.layout:hide()
|
||||
local chars = "asdfghjkl"
|
||||
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||
if vim.api.nvim_win_get_config(win).relative == "" then
|
||||
local c = chars:sub(1, 1)
|
||||
chars = chars:sub(2)
|
||||
overlays[c] = Snacks.win({
|
||||
backdrop = false,
|
||||
win = win,
|
||||
focusable = false,
|
||||
enter = false,
|
||||
relative = "win",
|
||||
width = 7,
|
||||
height = 3,
|
||||
text = (" \n %s \n "):format(c),
|
||||
wo = {
|
||||
winhighlight = "NormalFloat:SnacksPickerEditWin",
|
||||
},
|
||||
})
|
||||
end
|
||||
end
|
||||
vim.cmd([[redraw!]])
|
||||
local char = vim.fn.getcharstr()
|
||||
for _, overlay in pairs(overlays) do
|
||||
overlay:close()
|
||||
end
|
||||
picker.layout:unhide()
|
||||
local win = overlays[char]
|
||||
if win then
|
||||
picker.main = win.opts.win
|
||||
M.jump(picker, item, action)
|
||||
end
|
||||
end
|
||||
|
||||
function M.bufdelete(picker)
|
||||
local non_buf_delete_requested = false
|
||||
for _, item in ipairs(picker:selected({ fallback = true })) do
|
||||
|
|
|
@ -185,6 +185,7 @@ local defaults = {
|
|||
["<a-p>"] = { "toggle_preview", mode = { "i", "n" } },
|
||||
["<a-w>"] = { "cycle_win", mode = { "i", "n" } },
|
||||
["<C-w>"] = { "<c-s-w>", mode = { "i" }, expr = true, desc = "delete word" },
|
||||
["<S-CR>"] = { "edit_win", mode = { "n", "i" } },
|
||||
["<C-Up>"] = { "history_back", mode = { "i", "n" } },
|
||||
["<C-Down>"] = { "history_forward", mode = { "i", "n" } },
|
||||
["<Tab>"] = { "select_and_next", mode = { "i", "n" } },
|
||||
|
|
|
@ -65,6 +65,7 @@ Snacks.util.set_hl({
|
|||
GitStatusCopied = "SnacksPickerGitStatus",
|
||||
GitStatusUntracked = "SnacksPickerGitStatus",
|
||||
ManSection = "Number",
|
||||
EditWin = "DiagnosticVirtualTextError",
|
||||
ManPage = "Special",
|
||||
-- Icons
|
||||
Icon = "Special",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue