vim.pack.add({ { src = "https://github.com/akinsho/bufferline.nvim", version = vim.version.range("^4") }, { src = "https://github.com/nvim-tree/nvim-web-devicons" }, }) require("bufferline").setup({ options = { mode = "buffers", diagnostics = "nvim_lsp", always_show_bufferline = true, separator_style = "thin", show_buffer_close_icons = true, show_close_icon = false, offsets = { { filetype = "neo-tree", text = function() return vim.fn.fnamemodify(vim.fn.getcwd(), ":t") end, highlight = "Directory", text_align = "left", separator = false, }, }, }, highlights = require("catppuccin.special.bufferline").get_theme(), }) local map = vim.keymap.set map("n", "", "BufferLineCyclePrev", { desc = "Prev buffer" }) map("n", "", "BufferLineCycleNext", { desc = "Next buffer" }) -- close current buffer, without picking; jump to the next file buffer first so the -- window never lands on the neo-tree buffer (nvim's own :bdelete switch prefers -- loaded buffers, which is always the neo-tree sidebar) map("n", "bd", function() local cur = vim.api.nvim_get_current_buf() require("bufferline").cycle(1) -- next buffer in bar order; skips unlisted buffers like neo-tree if vim.api.nvim_get_current_buf() == cur then vim.cmd("enew") -- no other buffer open: land on a fresh empty buffer end vim.cmd("bdelete! " .. cur) require("bufferline.ui").refresh() end, { desc = "Close current buffer" })