refactor(nvim): replace bufferline w/ barbar

This commit is contained in:
Price Hiller 2022-10-25 17:33:16 -05:00
parent fca0c5a0a4
commit e4d005a070
4 changed files with 11 additions and 145 deletions

View File

@ -1,18 +0,0 @@
local bufferline = require('bufferline')
bufferline.setup({
options = {
numbers = function(opts)
return string.format('%s', opts.id)
end,
diagnostics = 'nvim_lsp',
offsets = {
{
filetype = 'NvimTree',
text = 'File Explorer',
highlight = 'Directory',
text_align = 'left',
},
},
},
})

View File

@ -130,10 +130,10 @@ vim.keymap.set("n", "<leader>dl", dap.run_last, { silent = true, desc = "DAP: Ru
vim.keymap.set("n", "<leader>/", ":CommentToggle<CR>", { silent = true, desc = "Toggle Comment" })
vim.keymap.set("v", "<leader>/", ":'<,'>CommentToggle<CR>", { silent = true, desc = "Toggle Selection Comment" })
-- Bufferline mappings
vim.keymap.set("n", "<A-a>", ":BufferLineCyclePrev<CR>", { silent = true, desc = "Go to Previous Buffer" })
vim.keymap.set("n", "<A-s>", ":BufferLineCycleNext<CR>", { silent = true, desc = "Go to Next Buffer" })
vim.keymap.set("n", "<A-x>", require("utils.funcs").close_buffer, { silent = true, desc = "Close Buffer" })
-- Buffer mappings
vim.keymap.set("n", "<A-a>", ":BufferPrevious<CR>", { silent = true, desc = "Go to Previous Buffer" })
vim.keymap.set("n", "<A-s>", ":BufferNext<CR>", { silent = true, desc = "Go to Next Buffer" })
vim.keymap.set("n", "<A-x>", ":BufferClose<CR>", { silent = true, desc = "Close Buffer" })
-- Vim Notify Mappings
vim.keymap.set("n", "<leader>nv", ":Telescope notify<CR>", { silent = true, desc = "Notifications: Search" })

View File

@ -80,21 +80,21 @@ return packer.startup({
})
-- Tab Line at top of editor
use({
"akinsho/nvim-bufferline.lua",
after = "nvim-web-devicons",
requires = { "nvim-web-devicons" },
"romgrk/barbar.nvim",
requires = { "kyazdani42/nvim-web-devicons" },
config = function()
require("plugins.configs.bufferline")
require("bufferline").setup({
animation = true,
auto_hide = true,
})
end,
})
-- Statusline.
use({
"nvim-lualine/lualine.nvim",
after = {
"nvim-bufferline.lua",
},
config = function()
require("plugins.configs.statusline")
end,

View File

@ -1,121 +1,5 @@
local U = {}
U.close_buffer = function(force)
-- Yanked from NvChad, thanks to them. This saves
-- a lot of pain
-- This is a modification of a NeoVim plugin from
-- Author: ojroques - Olivier Roques
-- Src: https://github.com/ojroques/nvim-bufdel
-- Options
local opts = {
next = 'cycle', -- how to retrieve the next buffer
quit = false, -- exit when last buffer is deleted
--TODO make this a chadrc flag/option
}
-- ----------------
-- Helper functions
-- ----------------
-- Switch to buffer 'buf' on each window from list 'windows'
local function switch_buffer(windows, buf)
local cur_win = vim.fn.winnr()
for _, winid in ipairs(windows) do
vim.cmd(string.format('%d wincmd w', vim.fn.win_id2win(winid)))
vim.cmd(string.format('buffer %d', buf))
end
vim.cmd(string.format('%d wincmd w', cur_win)) -- return to original window
end
-- Select the first buffer with a number greater than given buffer
local function get_next_buf(buf)
local next = vim.fn.bufnr('#')
if opts.next == 'alternate' and vim.fn.buflisted(next) == 1 then
return next
end
for i = 0, vim.fn.bufnr('$') - 1 do
next = (buf + i) % vim.fn.bufnr('$') + 1 -- will loop back to 1
if vim.fn.buflisted(next) == 1 then
return next
end
end
end
-- ----------------
-- End helper functions
-- ----------------
local buf = vim.fn.bufnr()
if vim.fn.buflisted(buf) == 0 then -- exit if buffer number is invalid
vim.cmd('close')
return
end
if #vim.fn.getbufinfo({ buflisted = 1 }) < 2 then
if opts.quit then
-- exit when there is only one buffer left
if force then
vim.cmd('qall!')
else
vim.cmd('confirm qall')
end
return
end
local chad_term, _ = pcall(function()
return vim.api.nvim_buf_get_var(buf, 'term_type')
end)
if chad_term then
-- Must be a window type
vim.cmd(string.format('setlocal nobl', buf))
vim.cmd('enew')
return
end
-- don't exit and create a new empty buffer
vim.cmd('enew')
vim.cmd('bp')
end
local next_buf = get_next_buf(buf)
local windows = vim.fn.getbufinfo(buf)[1].windows
-- force deletion of terminal buffers to avoid the prompt
if force or vim.fn.getbufvar(buf, '&buftype') == 'terminal' then
local chad_term, type = pcall(function()
return vim.api.nvim_buf_get_var(buf, 'term_type')
end)
-- TODO this scope is error prone, make resilient
if chad_term then
if type == 'wind' then
-- hide from bufferline
vim.cmd(string.format('%d bufdo setlocal nobl', buf))
-- swtich to another buff
-- TODO switch to next bufffer, this works too
vim.cmd('BufferLineCycleNext')
else
local cur_win = vim.fn.winnr()
-- we can close this window
vim.cmd(string.format('%d wincmd c', cur_win))
return
end
else
switch_buffer(windows, next_buf)
vim.cmd(string.format('bd! %d', buf))
end
else
switch_buffer(windows, next_buf)
vim.cmd(string.format('silent! confirm bd %d', buf))
end
-- revert buffer switches if user has canceled deletion
if vim.fn.buflisted(buf) == 1 then
switch_buffer(windows, buf)
end
end
U.rgbToHex = function(rgb)
return string.format('#%06x', rgb)
end