nvim-lua.kickstart.nvim/lua/custom/plugins/bufferline.lua
sharmaharshitnone b94576c7b4 Enhances UI with bufferline, diagnostics, and theme
- Integrates plugins for improved buffer management (bufferline, bufdelete) and diagnostics display (trouble).
- Applies the Catppuccin theme for a refreshed visual experience.
- Updates Neovim settings to support new UI elements and enable Nerd Fonts.
2025-05-30 11:53:51 +05:30

87 lines
3.7 KiB
Lua

-- 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', '<leader>bp', '<cmd>BufferLinePick<CR>', {noremap = true, desc = "Pick buffer"})
vim.keymap.set('n', '<leader>bc', '<cmd>BufferLinePickClose<CR>', {noremap = true, desc = "Pick buffer to close"})
vim.keymap.set('n', '<leader>bh', '<cmd>BufferLineCyclePrev<CR>', {noremap = true, desc = "Previous buffer"})
vim.keymap.set('n', '<leader>bl', '<cmd>BufferLineCycleNext<CR>', {noremap = true, desc = "Next buffer"})
vim.keymap.set('n', '<leader>bH', '<cmd>BufferLineMovePrev<CR>', {noremap = true, desc = "Move buffer left"})
vim.keymap.set('n', '<leader>bL', '<cmd>BufferLineMoveNext<CR>', {noremap = true, desc = "Move buffer right"})
vim.keymap.set('n', '<leader>b1', '<cmd>BufferLineGoToBuffer 1<CR>', {noremap = true, desc = "Go to buffer 1"})
vim.keymap.set('n', '<leader>b2', '<cmd>BufferLineGoToBuffer 2<CR>', {noremap = true, desc = "Go to buffer 2"})
vim.keymap.set('n', '<leader>b3', '<cmd>BufferLineGoToBuffer 3<CR>', {noremap = true, desc = "Go to buffer 3"})
vim.keymap.set('n', '<leader>b4', '<cmd>BufferLineGoToBuffer 4<CR>', {noremap = true, desc = "Go to buffer 4"})
vim.keymap.set('n', '<leader>b5', '<cmd>BufferLineGoToBuffer 5<CR>', {noremap = true, desc = "Go to buffer 5"})
vim.keymap.set('n', '<leader>b6', '<cmd>BufferLineGoToBuffer 6<CR>', {noremap = true, desc = "Go to buffer 6"})
vim.keymap.set('n', '<leader>b7', '<cmd>BufferLineGoToBuffer 7<CR>', {noremap = true, desc = "Go to buffer 7"})
vim.keymap.set('n', '<leader>b8', '<cmd>BufferLineGoToBuffer 8<CR>', {noremap = true, desc = "Go to buffer 8"})
vim.keymap.set('n', '<leader>b9', '<cmd>BufferLineGoToBuffer 9<CR>', {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('<A-%s>', i), string.format('<cmd>BufferLineGoToBuffer %s<CR>', i),
{noremap = true, desc = string.format("Go to buffer %s", i)})
end
end,
}