diff --git a/neovim/.config/nvim/after/plugin/cmds.lua b/neovim/.config/nvim/after/plugin/cmds.lua index a03f176..8329e85 100644 --- a/neovim/.config/nvim/after/plugin/cmds.lua +++ b/neovim/.config/nvim/after/plugin/cmds.lua @@ -13,3 +13,7 @@ end, {}) vim.api.nvim_create_user_command("ClearMessages", function() require("notify").dismiss() end, {}) + +vim.api.nvim_create_user_command("OpenUnsavedBuffers", function() + require("daniil.utils").open_unsaved_buffers() +end, {}) diff --git a/neovim/.config/nvim/lua/daniil/utils.lua b/neovim/.config/nvim/lua/daniil/utils.lua index b4a0aed..4b750bd 100644 --- a/neovim/.config/nvim/lua/daniil/utils.lua +++ b/neovim/.config/nvim/lua/daniil/utils.lua @@ -86,4 +86,27 @@ function M.lsp_format(bufnr) }) end +function M.open_unsaved_buffers() + local buffers = vim.api.nvim_list_bufs() + local unsaved_buffers = {} + + local og_bufnr = vim.api.nvim_get_current_buf() + + for _, bufnr in ipairs(buffers) do + local is_saved = vim.api.nvim_buf_get_option(bufnr, "modified") + + if is_saved and bufnr ~= og_bufnr then + local bufname = vim.api.nvim_buf_get_name(bufnr) + + table.insert(unsaved_buffers, bufnr) + + vim.cmd("tabnew " .. bufname) + end + end + + if #unsaved_buffers > 0 then + vim.notify("Opened " .. #unsaved_buffers .. " unsaved buffers") + end +end + return M