-- ============================================================ -- BUFFERLINE -- Buffer tabs -- ============================================================ local plugins = { { src = 'https://github.com/akinsho/bufferline.nvim', version = vim.version.range '*', }, } if vim.g.have_nerd_font then table.insert(plugins, 'https://github.com/nvim-tree/nvim-web-devicons') end vim.pack.add(plugins) -- ============================================================ -- SETUP -- ============================================================ require('bufferline').setup { options = { mode = 'buffers', numbers = 'none', close_command = 'bdelete! %d', right_mouse_command = 'bdelete! %d', left_mouse_command = 'buffer %d', middle_mouse_command = nil, indicator = { style = 'underline', }, buffer_close_icon = '󰅖', modified_icon = '●', close_icon = '', left_trunc_marker = '', right_trunc_marker = '', max_name_length = 24, max_prefix_length = 18, tab_size = 20, diagnostics = 'nvim_lsp', diagnostics_indicator = function(_, _, diagnostics_dict) local s = ' ' for e, n in pairs(diagnostics_dict) do local sym = e == 'error' and ' ' or (e == 'warning' and ' ') or ' ' s = s .. n .. sym end return s end, offsets = { { filetype = 'neo-tree', text = 'File Explorer', highlight = 'Directory', text_align = 'left', }, }, show_buffer_icons = true, show_buffer_close_icons = false, show_close_icon = false, show_tab_indicators = true, persist_buffer_sort = true, separator_style = 'slant', enforce_regular_tabs = false, always_show_bufferline = true, hover = { enabled = true, delay = 200, reveal = { 'close' }, }, }, } -- ============================================================ -- KEYMAPS -- ============================================================ -- Next buffer vim.keymap.set('n', '', 'BufferLineCycleNext', { desc = 'Next Buffer', silent = true, }) -- Previous buffer vim.keymap.set('n', '', 'BufferLineCyclePrev', { desc = 'Previous Buffer', silent = true, }) -- Pin buffer vim.keymap.set('n', 'bp', 'BufferLineTogglePin', { desc = 'Pin Buffer', silent = true, }) -- Close buffer vim.keymap.set('n', 'bc', 'bdelete', { desc = 'Close Buffer', silent = true, }) -- Go to buffer by number for i = 1, 9 do vim.keymap.set('n', '' .. i, function() require('bufferline').go_to(i, true) end, { desc = 'Go to buffer ' .. i, silent = true, }) end