1return {
2 "akinsho/bufferline.nvim",
3 version = "*",
4 dependencies = { "nvim-tree/nvim-web-devicons", "famiu/bufdelete.nvim" },
5 config = function()
6 require("bufferline").setup({
7 options = {
8 mode = "buffers", -- Show buffers (not tabs)
9 style_preset = require("bufferline").style_preset.default,
10 themable = true,
11 numbers = "none", -- Show 1, 2, 3... for easy jumping
12 close_command = "bdelete! %d", -- Close buffer command
13 right_mouse_command = "bdelete! %d", -- Close with right click
14 left_mouse_command = "buffer %d", -- Switch with left click
15 middle_mouse_command = nil, -- Nothing on middle click
16
17 -- Visual
18 indicator = {
19 style = "icon",
20 },
21 buffer_close_icon = "",
22 modified_icon = "●",
23 close_icon = "",
24 left_trunc_marker = "",
25 right_trunc_marker = "",
26
27 -- Behavior
28 max_name_length = 15,
29 max_prefix_length = 13,
30 truncate_names = true,
31 tab_size = 15,
32 diagnostics = "nvim_lsp", -- Show LSP diagnostics
33 diagnostics_indicator = function(count, level)
34 local icon = level:match("error") and " " or " "
35 return " " .. icon .. count
36 end,
37
38 -- Separator style
39 separator_style = "thin", -- Options: "slant", "thick", "thin", "padded_slant"
40
41 -- Show/hide elements
42 show_buffer_icons = true,
43 show_buffer_close_icons = false,
44 show_close_icon = false,
45 show_tab_indicators = true,
46 show_duplicate_prefix = true,
47 persist_buffer_sort = true,
48 move_wraps_at_ends = false,
49
50 -- Sorting
51 sort_by = "insert_after_current",
52
53 -- Custom filtering (optional)
54 custom_filter = function(buf_number)
55 -- Hide [No Name] buffers
56 local name = vim.api.nvim_buf_get_name(buf_number)
57
58 if name == "" then
59 return false
60 end
61
62 -- Don't show certain filetypes
63 local filetype = vim.bo[buf_number].filetype
64 if filetype == "qf" or filetype == "help" then
65 return false
66 end
67 return true
68 end,
69 },
70 })
71 end,
72}