diff --git a/lua/custom/plugins/buffer.lua b/lua/custom/plugins/buffer.lua new file mode 100644 index 00000000..9fe01d5e --- /dev/null +++ b/lua/custom/plugins/buffer.lua @@ -0,0 +1,53 @@ +local buffers = { + { + 'akinsho/bufferline.nvim', + event = 'VeryLazy', + keys = { + { 'bp', 'BufferLineTogglePin', desc = 'Toggle Pin' }, + { 'bP', 'BufferLineGroupClose ungrouped', desc = 'Delete Non-Pinned Buffers' }, + { 'bo', 'BufferLineCloseOthers', desc = 'Delete Other Buffers' }, + { 'br', 'BufferLineCloseRight', desc = 'Delete Buffers to the Right' }, + { 'bl', 'BufferLineCloseLeft', desc = 'Delete Buffers to the Left' }, + { '', 'BufferLineCyclePrev', desc = 'Prev Buffer' }, + { '', 'BufferLineCycleNext', desc = 'Next Buffer' }, + { '[b', 'BufferLineCyclePrev', desc = 'Prev Buffer' }, + { ']b', 'BufferLineCycleNext', desc = 'Next Buffer' }, + }, + opts = { + options = { + -- stylua: ignore + close_command = function(n) require("mini.bufremove").delete(n, false) end, + -- stylua: ignore + right_mouse_command = function(n) require("mini.bufremove").delete(n, false) end, + diagnostics = 'nvim_lsp', + always_show_bufferline = false, + diagnostics_indicator = function(_, _, diag) + local icons = require('lazyvim.config').icons.diagnostics + local ret = (diag.error and icons.Error .. diag.error .. ' ' or '') .. (diag.warning and icons.Warn .. diag.warning or '') + return vim.trim(ret) + end, + offsets = { + { + filetype = 'neo-tree', + text = 'Neo-tree', + highlight = 'Directory', + text_align = 'left', + }, + }, + }, + }, + config = function(_, opts) + require('bufferline').setup(opts) + -- Fix bufferline when restoring a session + vim.api.nvim_create_autocmd('BufAdd', { + callback = function() + vim.schedule(function() + pcall(nvim_bufferline) + end) + end, + }) + end, + }, +} + +return buffers