From 4b05ebdf202bf61ce240f40558822fe5564d02ea Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Mon, 20 Mar 2023 09:22:46 -0700 Subject: [PATCH] fix: oil.close doesn't error when no other buffers exist (#79) --- lua/oil/init.lua | 6 +++++- tests/regression_spec.lua | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lua/oil/init.lua b/lua/oil/init.lua index c937d3d..6df104f 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -317,7 +317,11 @@ M.close = function() -- Deleting the buffer closes all windows with that buffer open, so navigate to a different -- buffer first local oilbuf = vim.api.nvim_get_current_buf() - vim.cmd.bprev() + ok = pcall(vim.cmd.bprev) + if not ok then + -- If `bprev` failed, there are no buffers open so we should create a new one with enew + vim.cmd.enew() + end vim.api.nvim_buf_delete(oilbuf, { force = true }) end diff --git a/tests/regression_spec.lua b/tests/regression_spec.lua index 675853d..9054341 100644 --- a/tests/regression_spec.lua +++ b/tests/regression_spec.lua @@ -62,4 +62,13 @@ a.describe("regression tests", function() assert.equals(winid, vim.api.nvim_get_current_win()) assert.equals(bufnr, vim.api.nvim_get_current_buf()) end) + + -- https://github.com/stevearc/oil.nvim/issues/79 + a.it("Returns to empty buffer on close", function() + oil.open() + test_util.wait_for_autocmd("BufReadPost") + oil.close() + assert.not_equals("oil", vim.bo.filetype) + assert.equals("", vim.api.nvim_buf_get_name(0)) + end) end)