diff --git a/lua/oil/config.lua b/lua/oil/config.lua index 61fd4be..8bc1802 100644 --- a/lua/oil/config.lua +++ b/lua/oil/config.lua @@ -34,6 +34,10 @@ local default_config = { trash_command = "trash-put", -- Selecting a new/moved/renamed file or directory will prompt you to save changes first prompt_save_on_select_new_entry = true, + -- Oil will automatically delete hidden buffers after this delay + -- You can set the delay to false to disable cleanup entirely + -- Note that the cleanup process only starts when none of the oil buffers are currently displayed + cleanup_delay_ms = 2000, -- Keymaps in oil buffer. Can be any value that `vim.keymap.set` accepts OR a table of keymap -- options with a `callback` (e.g. { callback = function() ... end, desc = "", mode = "n" }) -- Additionally, if it is a string that matches "actions.", diff --git a/lua/oil/view.lua b/lua/oil/view.lua index 150bd64..9cd5992 100644 --- a/lua/oil/view.lua +++ b/lua/oil/view.lua @@ -258,11 +258,18 @@ M.initialize = function(bufnr) -- First wait a short time (10ms) for the buffer change to settle vim.defer_fn(function() local visible_buffers = get_visible_hidden_buffers() - -- Only kick off the 2-second timer if we don't have any visible oil buffers + -- Only delete oil buffers if none of them are visible if visible_buffers and vim.tbl_isempty(visible_buffers) then - vim.defer_fn(function() - M.delete_hidden_buffers() - end, 2000) + -- Check if cleanup is enabled + if type(config.cleanup_delay_ms) == "number" then + if config.cleanup_delay_ms > 0 then + vim.defer_fn(function() + M.delete_hidden_buffers() + end, config.cleanup_delay_ms) + else + M.delete_hidden_buffers() + end + end end end, 10) end,