From 950bef31cb71f453102246524097766cf3b1fd8e Mon Sep 17 00:00:00 2001 From: long Date: Tue, 10 Jan 2023 07:38:14 -0600 Subject: [PATCH] added shortcut to remove unused buffers --- init.lua | 1 + lua/buffer_tools.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 lua/buffer_tools.lua diff --git a/init.lua b/init.lua index 3a25ebb..8294297 100644 --- a/init.lua +++ b/init.lua @@ -1,3 +1,4 @@ require("base") require("specifics") require("plugins") +require("buffer_tools").init() diff --git a/lua/buffer_tools.lua b/lua/buffer_tools.lua new file mode 100644 index 0000000..3b2deef --- /dev/null +++ b/lua/buffer_tools.lua @@ -0,0 +1,44 @@ +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