fix: previewed buffers are deleted once hidden (#141)
This commit is contained in:
parent
c080379a4d
commit
eaa20a6aee
1 changed files with 32 additions and 7 deletions
|
|
@ -538,14 +538,26 @@ M.select = function(opts, callback)
|
||||||
split = opts.split,
|
split = opts.split,
|
||||||
keepalt = true,
|
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
|
if opts.preview and preview_win then
|
||||||
vim.api.nvim_set_current_win(preview_win)
|
vim.api.nvim_set_current_win(preview_win)
|
||||||
vim.cmd.edit({ args = { util.escape_filename(normalized_url) }, mods = mods })
|
cmd = "edit"
|
||||||
else
|
else
|
||||||
if vim.tbl_isempty(mods) then
|
if vim.tbl_isempty(mods) then
|
||||||
mods = nil
|
mods = nil
|
||||||
end
|
end
|
||||||
local cmd
|
|
||||||
if opts.tab then
|
if opts.tab then
|
||||||
cmd = "tabedit"
|
cmd = "tabedit"
|
||||||
elseif opts.split then
|
elseif opts.split then
|
||||||
|
|
@ -553,12 +565,12 @@ M.select = function(opts, callback)
|
||||||
else
|
else
|
||||||
cmd = "edit"
|
cmd = "edit"
|
||||||
end
|
end
|
||||||
vim.cmd({
|
|
||||||
cmd = cmd,
|
|
||||||
args = { util.escape_filename(normalized_url) },
|
|
||||||
mods = mods,
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
vim.cmd({
|
||||||
|
cmd = cmd,
|
||||||
|
args = { filename },
|
||||||
|
mods = mods,
|
||||||
|
})
|
||||||
if opts.preview then
|
if opts.preview then
|
||||||
vim.api.nvim_set_option_value("previewwindow", true, { scope = "local", win = 0 })
|
vim.api.nvim_set_option_value("previewwindow", true, { scope = "local", win = 0 })
|
||||||
vim.w.oil_entry_id = entry.id
|
vim.w.oil_entry_id = entry.id
|
||||||
|
|
@ -908,6 +920,19 @@ M.setup = function(opts)
|
||||||
end
|
end
|
||||||
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
|
if not config.silence_scp_warning then
|
||||||
vim.api.nvim_create_autocmd("BufNew", {
|
vim.api.nvim_create_autocmd("BufNew", {
|
||||||
desc = "Warn about scp:// usage",
|
desc = "Warn about scp:// usage",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue