feat: bufferline.nvim
This commit is contained in:
parent
5e7f438410
commit
adcdd78525
4 changed files with 89 additions and 0 deletions
|
@ -35,6 +35,7 @@ with final.pkgs.lib; let
|
||||||
|
|
||||||
# UI
|
# UI
|
||||||
mini-icons
|
mini-icons
|
||||||
|
bufferline-nvim
|
||||||
];
|
];
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
|
|
8
nvim/lua/icons.lua
Normal file
8
nvim/lua/icons.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
return {
|
||||||
|
diagnostics = {
|
||||||
|
Error = ' ',
|
||||||
|
Warn = ' ',
|
||||||
|
Hint = ' ',
|
||||||
|
Info = ' ',
|
||||||
|
},
|
||||||
|
}
|
79
nvim/lua/plugins/ui/bufferline-nvim.lua
Normal file
79
nvim/lua/plugins/ui/bufferline-nvim.lua
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
return {
|
||||||
|
'bufferline.nvim',
|
||||||
|
event = 'DeferredUIEnter',
|
||||||
|
keys = {
|
||||||
|
{ '<LEADER>bp', '<CMD>BufferLineTogglePin<CR>', desc = 'Toggle pin' },
|
||||||
|
{
|
||||||
|
'<LEADER>bP',
|
||||||
|
'<CMD>BufferLineGroupClose ungrouped<CR>',
|
||||||
|
desc = 'Delete non-pinned buffers',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<LEADER>br',
|
||||||
|
'<CMD>BufferLineCloseRight<CR>',
|
||||||
|
desc = 'Delete buffers to the right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<LEADER>bl',
|
||||||
|
'<CMD>BufferLineCloseLeft<CR>',
|
||||||
|
desc = 'Delete buffers to the left',
|
||||||
|
},
|
||||||
|
{ '<S-H>', '<CMD>BufferLineCyclePrev<CR>', desc = 'Previous buffer' },
|
||||||
|
{ '<S-L>', '<CMD>BufferLineCycleNext<CR>', desc = 'Next buffer' },
|
||||||
|
{ '[b', '<CMD>BufferLineCyclePrev<CR>', desc = 'Previous buffer' },
|
||||||
|
{ ']b', '<CMD>BufferLineCycleNext<CR>', desc = 'Next buffer' },
|
||||||
|
{ '[B', '<CMD>BufferLineMovePrev<CR>', desc = 'Move buffer left' },
|
||||||
|
{ ']B', '<CMD>BufferLineMoveNext<CR>', desc = 'Move buffer right' },
|
||||||
|
},
|
||||||
|
before = function()
|
||||||
|
require('lz.n').trigger_load('mini.icons')
|
||||||
|
end,
|
||||||
|
after = function()
|
||||||
|
require('bufferline').setup({
|
||||||
|
options = {
|
||||||
|
always_show_bufferline = true,
|
||||||
|
|
||||||
|
close_command = function(n)
|
||||||
|
Snacks.bufdelete(n)
|
||||||
|
end,
|
||||||
|
right_mouse_command = function(n)
|
||||||
|
Snacks.bufdelete(n)
|
||||||
|
end,
|
||||||
|
|
||||||
|
diagnostics = 'nvim_lsp',
|
||||||
|
diagnostics_indicator = function(_, _, diag)
|
||||||
|
local icons = require('icons').diagnostics
|
||||||
|
local ret = (diag.error and icons.Error .. diag.error .. ' ' or '')
|
||||||
|
.. (diag.warning and icons.Warn .. diag.warning or '')
|
||||||
|
|
||||||
|
return vim.trim(ret)
|
||||||
|
end,
|
||||||
|
|
||||||
|
offsets = {
|
||||||
|
{
|
||||||
|
filetype = 'neo-tree',
|
||||||
|
text = 'Explorer',
|
||||||
|
highlight = 'Directory',
|
||||||
|
text_align = 'center',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
get_element_icon = function(elem)
|
||||||
|
local icon, hl, _ =
|
||||||
|
require('mini.icons').get('filetype', elem.filetype)
|
||||||
|
|
||||||
|
return icon, hl
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufAdd', 'BufDelete' }, {
|
||||||
|
desc = 'Fix bufferline when restoring a session',
|
||||||
|
callback = function()
|
||||||
|
vim.schedule(function()
|
||||||
|
pcall(nvim_bufferline)
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
local req = require('lib.marleyvim').localRequire('plugins.ui')
|
local req = require('lib.marleyvim').localRequire('plugins.ui')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
req('bufferline-nvim'),
|
||||||
req('mini-icons'),
|
req('mini-icons'),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue