--- 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", "", ":BufferLineCycleNext") km("n", "", ":BufferLineCyclePrev") km("n", "bn", ":BufferLineMoveNext") km("n", "bp", ":BufferLineMovePrev") km("n", "bc", ":BufferLinePickClose")