refactor: only create BufAdd autocmd when default_file_explorer is true
Problem: the BufAdd autocmd that hijacks directory buffers was always created, even when default_file_explorer was false. The guard inside maybe_hijack_directory_buffer made it a no-op, but the autocmd still fired on every BufAdd event. Solution: wrap the BufAdd autocmd creation and initial buffer hijack in a config.default_file_explorer conditional. The guard inside maybe_hijack_directory_buffer is kept as defense-in-depth. Based on: stevearc/oil.nvim#720
This commit is contained in:
parent
723145c9fb
commit
2228f80196
1 changed files with 15 additions and 14 deletions
|
|
@ -1397,15 +1397,6 @@ M.setup = function(opts)
|
|||
vim.w.oil_original_alternate = vim.w[parent_win].oil_original_alternate
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufAdd", {
|
||||
desc = "Detect directory buffer and open oil file browser",
|
||||
group = aug,
|
||||
pattern = "*",
|
||||
nested = true,
|
||||
callback = function(params)
|
||||
maybe_hijack_directory_buffer(params.buf)
|
||||
end,
|
||||
})
|
||||
-- mksession doesn't save oil buffers in a useful way. We have to manually load them after a
|
||||
-- session finishes loading. See https://github.com/stevearc/oil.nvim/issues/29
|
||||
vim.api.nvim_create_autocmd("SessionLoadPost", {
|
||||
|
|
@ -1424,11 +1415,21 @@ M.setup = function(opts)
|
|||
end,
|
||||
})
|
||||
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
if maybe_hijack_directory_buffer(bufnr) and vim.v.vim_did_enter == 1 then
|
||||
-- manually call load on a hijacked directory buffer if vim has already entered
|
||||
-- (the BufReadCmd will not trigger)
|
||||
M.load_oil_buffer(bufnr)
|
||||
if config.default_file_explorer then
|
||||
vim.api.nvim_create_autocmd("BufAdd", {
|
||||
desc = "Detect directory buffer and open oil file browser",
|
||||
group = aug,
|
||||
pattern = "*",
|
||||
nested = true,
|
||||
callback = function(params)
|
||||
maybe_hijack_directory_buffer(params.buf)
|
||||
end,
|
||||
})
|
||||
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
if maybe_hijack_directory_buffer(bufnr) and vim.v.vim_did_enter == 1 then
|
||||
M.load_oil_buffer(bufnr)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue