fix: previewed buffers are deleted once hidden (#141)

This commit is contained in:
Steven Arcangeli 2023-07-17 17:01:36 -07:00
parent c080379a4d
commit eaa20a6aee

View file

@ -538,14 +538,26 @@ M.select = function(opts, callback)
split = opts.split,
keepalt = true,
}
local filename = util.escape_filename(normalized_url)
-- If we're previewing a file that hasn't been opened yet, make sure it gets deleted after we
-- close the window
if opts.preview and not util.parse_url(filename) then
local bufnr = vim.fn.bufadd(filename)
if vim.fn.bufloaded(bufnr) == 0 then
vim.bo[bufnr].bufhidden = "wipe"
vim.b[bufnr].oil_preview_buffer = true
end
end
local cmd
if opts.preview and preview_win then
vim.api.nvim_set_current_win(preview_win)
vim.cmd.edit({ args = { util.escape_filename(normalized_url) }, mods = mods })
cmd = "edit"
else
if vim.tbl_isempty(mods) then
mods = nil
end
local cmd
if opts.tab then
cmd = "tabedit"
elseif opts.split then
@ -553,12 +565,12 @@ M.select = function(opts, callback)
else
cmd = "edit"
end
vim.cmd({
cmd = cmd,
args = { util.escape_filename(normalized_url) },
mods = mods,
})
end
vim.cmd({
cmd = cmd,
args = { filename },
mods = mods,
})
if opts.preview then
vim.api.nvim_set_option_value("previewwindow", true, { scope = "local", win = 0 })
vim.w.oil_entry_id = entry.id
@ -908,6 +920,19 @@ M.setup = function(opts)
end
end,
})
vim.api.nvim_create_autocmd({ "BufWinEnter", "WinNew", "WinEnter" }, {
desc = "Reset bufhidden when entering a preview buffer",
group = aug,
pattern = "*",
callback = function()
-- If we have entered a "preview" buffer in a non-preview window, reset bufhidden
if vim.b.oil_preview_buffer and not vim.wo.previewwindow then
vim.bo.bufhidden = vim.o.bufhidden
vim.b.oil_preview_buffer = nil
end
end,
})
if not config.silence_scp_warning then
vim.api.nvim_create_autocmd("BufNew", {
desc = "Warn about scp:// usage",