Files

123 lines
2.7 KiB
Lua
Raw Permalink Normal View History

2026-05-20 09:39:20 -06:00
-- ============================================================
-- 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', '<Tab>', '<Cmd>BufferLineCycleNext<CR>', {
desc = 'Next Buffer',
silent = true,
})
-- Previous buffer
vim.keymap.set('n', '<S-Tab>', '<Cmd>BufferLineCyclePrev<CR>', {
desc = 'Previous Buffer',
silent = true,
})
-- Pin buffer
vim.keymap.set('n', '<leader>bp', '<Cmd>BufferLineTogglePin<CR>', {
desc = 'Pin Buffer',
silent = true,
})
-- Close buffer
vim.keymap.set('n', '<leader>bc', '<Cmd>bdelete<CR>', {
desc = 'Close Buffer',
silent = true,
})
-- Go to buffer by number
for i = 1, 9 do
vim.keymap.set('n', '<leader>' .. i, function() require('bufferline').go_to(i, true) end, {
desc = 'Go to buffer ' .. i,
silent = true,
})
end