require('bufferline').setup { options = { -- numbers = function(opts) -- return string.format("%s", opts.id) -- end, numbers = function(opts) return "" end, -- number_style = "superscript" | "subscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2 -- number_style = "none", close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions" right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions" left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" -- NOTE: this plugin is designed with this icon in mind, -- and so changing this is NOT recommended, this is intended -- as an escape hatch for people who cannot bear it for whatever reason indicator_style = '▎', buffer_close_icon = '', modified_icon = '●', close_icon = '', left_trunc_marker = '', right_trunc_marker = '', --- name_formatter can be used to change the buffer's label in the bufferline. --- Please note some names can/will break the --- bufferline so use this at your discretion knowing that it has --- some limitations that will *NOT* be fixed. name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr" -- remove extension from markdown files for example if buf.name:match('%.md') then return vim.fn.fnamemodify(buf.name, ':t:r') end end, max_name_length = 18, max_prefix_length = 15, -- prefix used when a buffer is de-duplicated tab_size = 18, -- diagnostics = false | "nvim_lsp" | "coc", diagnostics = "nvim_lsp", diagnostics_update_in_insert = false, diagnostics_indicator = function(count, level, diagnostics_dict, context) local s = " " for e, n in pairs(diagnostics_dict) do local sym = e == "error" and " " or e == "hint" and " " or (e == "warning" and " " or "" ) s = s .. n .. sym end return s end, custom_filter = function(buf_number, buf_numbers) -- filter out filetypes you don't want to see if vim.bo[buf_number].filetype ~= "" then return true end -- filter out by buffer name if vim.fn.bufname(buf_number) ~= "" then return true end -- filter out based on arbitrary rules -- e.g. filter out vim wiki buffer from tabline in your work repo if vim.fn.getcwd() == "" and vim.bo[buf_number].filetype ~= "wiki" then return true end -- filter out by it's index number in list (don't show first buffer) if buf_numbers[1] ~= buf_number then return true end end, -- offsets = {{filetype = "NvimTree", text = "File Explorer" | function , text_align = "left" | "center" | "right"}}, -- offsets = text_align = "left" | "center" | "right"}}, show_buffer_icons = true, show_buffer_close_icons = true, show_close_icon = false, show_tab_indicators = true, persist_buffer_sort = false, -- whether or not custom sorted buffers should persist -- can also be a table containing 2 custom separators -- [focused and unfocused]. eg: { '|', '|' } -- separator_style = "slant" | "thick" | "thin" | { 'any', 'any' }, separator_style = "thick", enforce_regular_tabs = false, always_show_bufferline = true, -- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b) sort_by = 'id', } }