Files
nvim/lua/config/bufferline.lua
2024-09-16 13:43:00 +02:00

235 lines
4.7 KiB
Lua

--- Ensure plugin is avaiable
local ok, bufferline = pcall(require, "bufferline")
if not ok then
return
end
--- Plugin options
local frappe = require("catppuccin.palettes").get_palette("frappe")
local opts = {
options = {
-- mode = "tabs",
separator_style = "slant",
},
highlights = require("catppuccin.groups.integrations.bufferline").get({
styles = { "italic", "bold" },
custom = {
all = {
fill = { -- bg before buffer
fg = frappe.text,
bg = frappe.crust,
},
background = { -- buffer bg
fg = frappe.text,
bg = frappe.base,
},
tab = {
fg = frappe.text,
bg = frappe.surface0,
},
tab_selected = {
fg = frappe.text,
bg = frappe.overlay0,
},
tab_separator = {
fg = frappe.text,
bg = frappe.surface0,
},
tab_separator_selected = {
fg = frappe.text,
bg = frappe.overlay0,
sp = "#ff0000",
underline = true,
},
tab_close = {
fg = frappe.text,
bg = frappe.surface0,
},
close_button = {
fg = frappe.text,
bg = frappe.base,
},
close_button_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
close_button_selected = {
fg = frappe.text,
bg = frappe.overlay0,
},
buffer_visible = { -- buffer displayed when in another tab
fg = frappe.text,
bg = frappe.surface0,
},
buffer_selected = { -- bufferline displayed when in tab
fg = frappe.text,
bg = frappe.overlay0,
},
numbers = {
fg = frappe.text,
bg = frappe.base,
},
numbers_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
numbers_selected = {
fg = frappe.text,
bg = frappe.overlay0,
bold = true,
italic = true,
},
diagnostic = {
fg = frappe.text,
bg = frappe.base,
},
diagnostic_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
diagnostic_selected = {
fg = frappe.text,
bg = frappe.overlay0,
bold = true,
italic = true,
},
hint = {
fg = frappe.text,
bg = frappe.base,
},
hint_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
hint_selected = {
fg = frappe.text,
bg = frappe.overlay0,
bold = true,
italic = true,
},
hint_diagnostic = {
fg = frappe.text,
bg = frappe.base,
},
hint_diagnostic_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
hint_diagnostic_selected = {
fg = frappe.text,
bg = frappe.overlay0,
sp = frappe.red,
bold = true,
italic = true,
},
info = {
fg = frappe.text,
bg = frappe.base,
},
info_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
info_selected = {
fg = frappe.text,
bg = frappe.overlay0,
sp = frappe.red,
bold = true,
italic = true,
},
info_diagnostic = {
fg = frappe.text,
bg = frappe.base,
},
info_diagnostic_visible = {
fg = frappe.text,
bg = frappe.surface0,
},
info_diagnostic_selected = {
fg = frappe.text,
bg = frappe.overlay0,
sp = frappe.red,
bold = true,
italic = true,
},
modified = {
fg = frappe.green,
bg = frappe.base,
},
modified_visible = {
fg = frappe.green,
bg = frappe.surface0,
},
modified_selected = {
fg = frappe.green,
bg = frappe.overlay0,
},
duplicate_selected = {
fg = frappe.text,
bg = frappe.overlay0,
italic = true,
},
duplicate_visible = {
fg = frappe.text,
bg = frappe.surface0,
italic = true,
},
duplicate = {
fg = frappe.text,
bg = frappe.base,
italic = true,
},
separator = {
fg = frappe.crust,
bg = frappe.base,
},
separator_visible = {
fg = frappe.crust,
bg = frappe.surface0,
},
separator_selected = {
fg = frappe.crust,
bg = frappe.overlay0,
},
indicator_visible = {
fg = frappe.crust,
bg = frappe.surface0,
},
indicator_selected = {
fg = frappe.crust,
bg = frappe.overlay0,
},
pick_selected = {
fg = frappe.crust,
bg = frappe.overlay0,
bold = true,
italic = true,
},
pick_visible = {
fg = frappe.crust,
bg = frappe.surface0,
bold = true,
italic = true,
},
pick = {
fg = frappe.crust,
bg = frappe.base,
bold = true,
italic = true,
},
},
},
}),
}
--- Load plugin
bufferline.setup(opts)
--- Override keymaps
local km = vim.keymap.set
km("n", "<Tab>", ":BufferLineCycleNext<cr>")
km("n", "<S-Tab>", ":BufferLineCyclePrev<cr>")
km("n", "<leader>bn", ":BufferLineMoveNext<cr>")
km("n", "<leader>bp", ":BufferLineMovePrev<cr>")
km("n", "<leader>bc", ":BufferLinePickClose<cr>")