diff options
author | Toby Vincent <tobyv13@gmail.com> | 2022-10-12 15:22:43 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2022-10-12 15:22:43 -0500 |
commit | 297be5cf8d55127d13fe1a53b030f71b734d0e80 (patch) | |
tree | aa73523d9f6e155526ce1d0d0e8a60f2b018f868 /nvim | |
parent | 0aa464d3cf23e9253dd82a94e88759b2cda98b99 (diff) |
fix(nvim): properly implement bdelete on last buffer
Diffstat (limited to 'nvim')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/alpha.lua | 7 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/buffer.lua | 8 |
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 |