summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-10-12 15:22:43 -0500
committerToby Vincent <tobyv13@gmail.com>2022-10-12 15:22:43 -0500
commit297be5cf8d55127d13fe1a53b030f71b734d0e80 (patch)
treeaa73523d9f6e155526ce1d0d0e8a60f2b018f868
parent0aa464d3cf23e9253dd82a94e88759b2cda98b99 (diff)
fix(nvim): properly implement bdelete on last buffer
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua7
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/buffer.lua8
2 files changed, 8 insertions, 7 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua b/nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua
index 1b7bef4..61903ab 100644
--- a/nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua
+++ b/nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua
@@ -249,13 +249,10 @@ M.setup = function()
vim.api.nvim_create_autocmd("User", {
group = vim.api.nvim_create_augroup("alpha_user", { clear = true }),
- pattern = "BDeletePre",
+ pattern = "BDeleteLast",
callback = function(args)
local bufnr = vim.F.if_nil(args.data.buf, args.buf)
- if
- #vim.fn.getbufinfo({ buflisted = 1 }) < 2
- and vim.api.nvim_buf_get_option(bufnr, "filetype") ~= "alpha"
- then
+ if vim.api.nvim_buf_get_option(bufnr, "filetype") ~= "alpha" then
alpha.start(false)
end
end,
diff --git a/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua b/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua
index 32448e4..071723d 100644
--- a/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua
+++ b/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua
@@ -78,6 +78,7 @@ M.bdelete = function(buffer, opts)
end)
end
+ local is_last_buffer = true
if vim.fn.buflisted(buffer) == 1 then
---@diagnostic disable-next-line: param-type-mismatch
local windows = vim.fn.getbufinfo(buffer)[1].windows
@@ -86,15 +87,18 @@ M.bdelete = function(buffer, opts)
local alt_buffer = vim.fn.bufnr("#")
if vim.fn.buflisted(alt_buffer) == 1 then
vim.api.nvim_win_set_buf(window, alt_buffer)
+ is_last_buffer = false
end
end
end
- vim.api.nvim_exec_autocmds("User", { pattern = "BDeletePre", data = { buf = buffer } })
+ if is_last_buffer and (#vim.fn.getbufinfo({ buflisted = 1 }) == 1) then
+ vim.api.nvim_exec_autocmds("User", { pattern = "BDeleteLast", data = { buf = buffer } })
+ end
if vim.api.nvim_buf_is_valid(buffer) then
vim.api.nvim_buf_set_option(buffer, "buflisted", false)
- vim.api.nvim_buf_delete(buffer, opts)
+ pcall(vim.api.nvim_buf_delete, buffer, opts)
end
end