Files
nvim/lua/config/bufferline.lua
T
2023-09-02 21:50:59 +02:00

116 lines
5.1 KiB
Lua

--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
--- Define what filetypes should be ignored by bufferline.
--- Filetypes not listed are enabled by default.
local ft_map = {
NvimTree = false,
fugitive = false,
}
require("bufferline").setup(
{
options = {
mode = "buffers",
numbers = function (ordinal, id, lower, raise) return "" end,
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"
indicator = {
icon = "", -- this should be omitted if indicator style is not 'icon'
style = "icon",
},
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:
-- name | str | the basename of the active file
-- path | str | the full path of the active file
-- bufnr (buffer only) | int | the number of the active buffer
-- buffers (tabs only) | table(int) | the numbers of the buffers in the tab
-- tabnr (tabs only) | int | the "handle" of the tab, can be converted to its ordinal number using: `vim.api.nvim_tabpage_get_number(buf.tabnr)`
return buf.name
end,
max_name_length = 18,
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
truncate_names = true,
tab_size = 18,
diagnostics = "nvim_lsp",
diagnostics_update_in_insert = false,
diagnostics_indicator = function (count, _, _, _)
return "(" .. count .. ")"
end,
-- NOTE: this will be called a lot so don't do any heavy processing here
custom_filter = function (buf, _)
local buf_ft = vim.bo[buf].filetype
if ft_map[buf_ft] == nil then
ft_map[buf_ft] = true -- enable by default
end
return ft_map[buf_ft]
end,
offsets = {
{
filetype = "NvimTree",
text = "File Explorer", -- header,
text_align = "center",
seperator = true,
-- padding = 1,
-- highlight = "CustomHeader",
},
{
filetype = "fugitive",
text = "Fugitive", -- header,
text_align = "center",
seperator = true,
-- padding = 1,
-- highlight = "CustomHeader",
},
{
filetype = "aerial",
text = "Aerial", -- header,
text_align = "center",
seperator = true,
-- padding = 1,
-- highlight = "CustomHeader",
},
},
color_icons = true, -- whether or not to add the filetype icon highlights
show_buffer_icons = true, -- disable filetype icons for buffers
show_buffer_close_icons = false,
show_buffer_default_icon = true, -- whether or not an unrecognised filetype should show a default icon
show_close_icon = false,
show_tab_indicators = true,
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
-- can also be a table containing 2 custom separators
-- [focused and unfocused]. eg: { '|', '|' }
separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' },
enforce_regular_tabs = true,
always_show_bufferline = true,
hover = { enabled = true, delay = 200, reveal = { "close", }, },
sort_by = "id",
},
}
)