local oil = require("oil") local test_util = require("tests.test_util") local fs = require("oil.fs") describe("Alternate buffer", function() after_each(function() test_util.reset_editor() end) it("sets previous buffer as alternate", function() vim.cmd.edit({ args = { "foo" } }) oil.open() vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) it("sets previous buffer as alternate when editing oil://", function() vim.cmd.edit({ args = { "foo" } }) vim.cmd.edit({ args = { "oil://" .. fs.os_to_posix_path(vim.fn.getcwd()) } }) vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) it("preserves alternate buffer if editing the same file", function() vim.cmd.edit({ args = { "foo" } }) vim.cmd.edit({ args = { "bar" } }) oil.open() vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) it("preserves alternate buffer if discarding changes", function() vim.cmd.edit({ args = { "foo" } }) vim.cmd.edit({ args = { "bar" } }) oil.open() oil.close() assert.equals("foo", vim.fn.expand("#")) end) it("sets previous buffer as alternate after multi-dir hops", function() vim.cmd.edit({ args = { "foo" } }) oil.open() oil.open() oil.open() oil.open() vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) describe("floating window", function() it("sets previous buffer as alternate", function() vim.cmd.edit({ args = { "foo" } }) oil.open_float() -- This is lazy, but testing the actual select logic is more difficult. We can simply -- replicated it by closing the current window and then doing the edit vim.api.nvim_win_close(0, true) vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) it("preserves alternate buffer if editing the same file", function() vim.cmd.edit({ args = { "foo" } }) vim.cmd.edit({ args = { "bar" } }) oil.open_float() -- This is lazy, but testing the actual select logic is more difficult. We can simply -- replicated it by closing the current window and then doing the edit vim.api.nvim_win_close(0, true) vim.cmd.edit({ args = { "bar" } }) assert.equals("foo", vim.fn.expand("#")) end) it("preserves alternate buffer if discarding changes", function() vim.cmd.edit({ args = { "foo" } }) vim.cmd.edit({ args = { "bar" } }) oil.open_float() oil.close() assert.equals("foo", vim.fn.expand("#")) end) end) end)