mirror of
https://github.com/folke/snacks.nvim
synced 2025-12-23 08:47:57 +00:00
fix(picker.preview): better hack to deal with buffer local option weirdness
This commit is contained in:
parent
d67a47739d
commit
c968d4def4
1 changed files with 12 additions and 10 deletions
|
|
@ -33,19 +33,18 @@ local ns_loc = vim.api.nvim_create_namespace("snacks.picker.preview.loc")
|
||||||
vim.api.nvim_create_autocmd("BufWinEnter", {
|
vim.api.nvim_create_autocmd("BufWinEnter", {
|
||||||
group = vim.api.nvim_create_augroup("snacks.picker.preview.wo", { clear = true }),
|
group = vim.api.nvim_create_augroup("snacks.picker.preview.wo", { clear = true }),
|
||||||
callback = function(ev)
|
callback = function(ev)
|
||||||
if not vim.b[ev.buf].snacks_previewed then
|
local buf = ev.buf
|
||||||
|
if not vim.b[buf].snacks_previewed then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local reset = { "winhighlight", "cursorline", "number", "relativenumber", "signcolumn" }
|
local win = vim.api.nvim_get_current_win()
|
||||||
local wo = {} ---@type table<string, any>
|
if buf ~= vim.api.nvim_win_get_buf(win) or vim.w[win].snacks_picker_preview then
|
||||||
for _, k in ipairs(reset) do
|
return
|
||||||
wo[k] = vim.api.nvim_get_option_value(k, { scope = "global" })
|
|
||||||
end
|
end
|
||||||
for _, win in ipairs(vim.fn.win_findbuf(ev.buf)) do
|
vim.b[buf].snacks_previewed = nil
|
||||||
if not Snacks.util.is_float(win) then -- only reset non-floating windows
|
local reset = { "winhighlight", "cursorline", "number", "relativenumber", "signcolumn" }
|
||||||
Snacks.util.wo(win, wo)
|
for _, k in ipairs(reset) do
|
||||||
vim.b[ev.buf].snacks_previewed = nil
|
vim.api.nvim_set_option_value(k, nil, { win = win, scope = "local" })
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
@ -82,6 +81,9 @@ function M.new(picker)
|
||||||
winhighlight = self.winhl,
|
winhighlight = self.winhl,
|
||||||
},
|
},
|
||||||
scratch_ft = "snacks_picker_preview",
|
scratch_ft = "snacks_picker_preview",
|
||||||
|
w = {
|
||||||
|
snacks_picker_preview = true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.win_opts = {
|
self.win_opts = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue