diff --git a/lua/oil/init.lua b/lua/oil/init.lua index 3cff13c..7b7599c 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -705,7 +705,9 @@ M.setup = function(opts) -- This new window is a split off of an oil window. We need to transfer the window -- variables. First, locate the parent window local parent_win - for _, winid in ipairs(vim.api.nvim_tabpage_list_wins(0)) do + -- First search windows in this tab, then search all windows + local winids = vim.list_extend(vim.api.nvim_tabpage_list_wins(0), vim.api.nvim_list_wins()) + for _, winid in ipairs(winids) do if vim.api.nvim_win_is_valid(winid) then if vim.w[winid].oil_did_enter then parent_win = winid diff --git a/tests/win_options_spec.lua b/tests/win_options_spec.lua index c8fc34e..05f84d0 100644 --- a/tests/win_options_spec.lua +++ b/tests/win_options_spec.lua @@ -40,4 +40,21 @@ a.describe("window options", function() vim.cmd.edit({ args = { "README.md" } }) assert.equals("auto", vim.o.signcolumn) end) + + a.it("Restores window options on tabnew ", function() + oil.open() + test_util.wait_for_autocmd("BufReadPost") + assert.equals("no", vim.o.signcolumn) + vim.cmd.tabnew({ args = { "README.md" } }) + assert.equals("auto", vim.o.signcolumn) + end) + + a.it("Restores window options on tabnew", function() + oil.open() + test_util.wait_for_autocmd("BufReadPost") + assert.equals("no", vim.o.signcolumn) + vim.cmd.tabnew() + vim.cmd.edit({ args = { "README.md" } }) + assert.equals("auto", vim.o.signcolumn) + end) end)