-- filepath: /home/kali/.config/nvim/lua/custom/plugins/bufferline.lua -- Bufferline configuration -- https://github.com/akinsho/bufferline.nvim return { 'akinsho/bufferline.nvim', version = "*", -- use the latest stable version event = "VeryLazy", -- lazy load for better startup dependencies = { 'nvim-tree/nvim-web-devicons', -- for file icons }, opts = { options = { -- Themes and appearance indicator = { style = 'icon', icon = '▎', }, buffer_close_icon = '󰅖', modified_icon = '●', close_icon = '', left_trunc_marker = '', right_trunc_marker = '', max_name_length = 18, max_prefix_length = 15, truncate_names = true, tab_size = 18, diagnostics = "nvim_lsp", -- Use LSP diagnostics diagnostics_update_in_insert = false, diagnostics_indicator = function(count, level, diagnostics_dict, context) local icon = level:match("error") and " " or " " return " " .. icon .. count end, offsets = { { filetype = "neo-tree", text = "File Explorer", text_align = "center", separator = true } }, color_icons = true, show_buffer_icons = true, show_buffer_close_icons = true, show_close_icon = true, show_tab_indicators = true, separator_style = "thin", enforce_regular_tabs = false, always_show_bufferline = true, hover = { enabled = true, delay = 200, reveal = {'close'} }, }, -- Colorscheme integration highlights = { -- These are automatically integrated with your colorscheme }, }, config = function(_, opts) require("bufferline").setup(opts) -- Key mappings for navigating between buffers vim.keymap.set('n', 'bp', 'BufferLinePick', {noremap = true, desc = "Pick buffer"}) vim.keymap.set('n', 'bc', 'BufferLinePickClose', {noremap = true, desc = "Pick buffer to close"}) vim.keymap.set('n', 'bh', 'BufferLineCyclePrev', {noremap = true, desc = "Previous buffer"}) vim.keymap.set('n', 'bl', 'BufferLineCycleNext', {noremap = true, desc = "Next buffer"}) vim.keymap.set('n', 'bH', 'BufferLineMovePrev', {noremap = true, desc = "Move buffer left"}) vim.keymap.set('n', 'bL', 'BufferLineMoveNext', {noremap = true, desc = "Move buffer right"}) vim.keymap.set('n', 'b1', 'BufferLineGoToBuffer 1', {noremap = true, desc = "Go to buffer 1"}) vim.keymap.set('n', 'b2', 'BufferLineGoToBuffer 2', {noremap = true, desc = "Go to buffer 2"}) vim.keymap.set('n', 'b3', 'BufferLineGoToBuffer 3', {noremap = true, desc = "Go to buffer 3"}) vim.keymap.set('n', 'b4', 'BufferLineGoToBuffer 4', {noremap = true, desc = "Go to buffer 4"}) vim.keymap.set('n', 'b5', 'BufferLineGoToBuffer 5', {noremap = true, desc = "Go to buffer 5"}) vim.keymap.set('n', 'b6', 'BufferLineGoToBuffer 6', {noremap = true, desc = "Go to buffer 6"}) vim.keymap.set('n', 'b7', 'BufferLineGoToBuffer 7', {noremap = true, desc = "Go to buffer 7"}) vim.keymap.set('n', 'b8', 'BufferLineGoToBuffer 8', {noremap = true, desc = "Go to buffer 8"}) vim.keymap.set('n', 'b9', 'BufferLineGoToBuffer 9', {noremap = true, desc = "Go to buffer 9"}) -- Additional keymaps for Alt+number to switch buffers quickly for i = 1, 9 do vim.keymap.set('n', string.format('', i), string.format('BufferLineGoToBuffer %s', i), {noremap = true, desc = string.format("Go to buffer %s", i)}) end end, }