local M = {} local function get_active_buffers() local active_buffers = {} for tabnr = 1, vim.fn.tabpagenr("$") do for _, bufnr in ipairs(vim.fn.tabpagebuflist(tabnr)) do active_buffers[bufnr] = true end end return active_buffers end local function get_all_buffers() local all_buffers = {} for bufnr = 1, vim.fn.bufnr("$") do if vim.fn.buflisted(bufnr) == 1 then all_buffers[bufnr] = true end end return all_buffers end function M.remove_unused_buffers() local active_buffers = get_active_buffers() local all_buffers = get_all_buffers() local buffers_to_remove = {} for bufnr, _ in pairs(all_buffers) do if active_buffers[bufnr] == nil then buffers_to_remove[bufnr] = true end end for bufnr, _ in pairs(buffers_to_remove) do vim.cmd("bd " .. bufnr) end end function M.init() local map = require("helpers").map map("n", "b", ":lua require('buffer_tools').remove_unused_buffers()") end return M