fix: hijack all directory buffers at setup, not just current (#11)

Problem: when neovim is opened with multiple directory arguments
(e.g. nvim dir1/ dir2/), only the first directory gets handled by oil.
The BufAdd autocmd that renames directory buffers to oil:// URLs is
registered inside setup(), but neovim creates all argument buffers
before setup() runs. The initial hijack block only processes
nvim_get_current_buf(), so additional directory buffers are never
renamed and remain as plain empty buffers.

Solution: iterate all existing buffers at setup time instead of only
the current one. Each directory buffer gets renamed to an oil:// URL
so that BufReadCmd fires when the user switches to it.

Closes: stevearc/oil.nvim#670
This commit is contained in:
Barrett Ruth 2026-02-21 02:22:49 -05:00 committed by GitHub
parent 01b860ed5c
commit 70861e5896
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1447,9 +1447,10 @@ 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
M.load_oil_buffer(bufnr)
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
if maybe_hijack_directory_buffer(bufnr) and vim.v.vim_did_enter == 1 then
M.load_oil_buffer(bufnr)
end
end
end
end