44 lines
1.5 KiB
Lua
44 lines
1.5 KiB
Lua
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", "<S-h>", "<Cmd>BufferLineCyclePrev<CR>", { desc = "Prev buffer" })
|
|
map("n", "<S-l>", "<Cmd>BufferLineCycleNext<CR>", { 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", "<leader>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" })
|