feat: add bufferline buffers renaming
This commit is contained in:
parent
cac441aaed
commit
b087276057
2 changed files with 102 additions and 74 deletions
|
|
@ -1,81 +1,108 @@
|
|||
local bufferline = require('bufferline')
|
||||
|
||||
vim.api.nvim_create_user_command('BufferRename', function(opts)
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local function rename(name)
|
||||
if name == nil or not vim.api.nvim_buf_is_valid(bufnr) then
|
||||
return
|
||||
end
|
||||
name = vim.trim(name)
|
||||
vim.b[bufnr].bufferline_name = name ~= '' and name or nil
|
||||
vim.cmd('redrawtabline')
|
||||
end
|
||||
|
||||
if opts.bang then
|
||||
rename('')
|
||||
elseif opts.args ~= '' then
|
||||
rename(opts.args)
|
||||
else
|
||||
vim.ui.input({
|
||||
prompt = 'Buffer label (empty to reset): ',
|
||||
default = vim.b[bufnr].bufferline_name or '',
|
||||
}, rename)
|
||||
end
|
||||
end, { nargs = '*', bang = true, desc = 'Rename bufferline label (use ! to reset)' })
|
||||
|
||||
bufferline.setup {
|
||||
options = {
|
||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||
style_preset = bufferline.style_preset.default,
|
||||
themable = true,
|
||||
indicator = {
|
||||
icon = '▎',
|
||||
style = 'icon',
|
||||
options = {
|
||||
name_formatter = function(buf)
|
||||
return vim.b[buf.bufnr].bufferline_name or buf.name
|
||||
end,
|
||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||
style_preset = bufferline.style_preset.default,
|
||||
themable = true,
|
||||
indicator = {
|
||||
icon = '▎',
|
||||
style = 'icon',
|
||||
},
|
||||
groups = {
|
||||
items = {
|
||||
{
|
||||
name = 'tornado',
|
||||
matcher = function(buf)
|
||||
return (buf.path or ""):lower():match("tornado")
|
||||
end,
|
||||
},
|
||||
groups = {
|
||||
items = {
|
||||
{
|
||||
name = 'tornado',
|
||||
matcher = function(buf)
|
||||
return (buf.path or ""):lower():match("tornado")
|
||||
end,
|
||||
},
|
||||
{
|
||||
name = 'gornado',
|
||||
matcher = function(buf)
|
||||
return (buf.path or ""):lower():match("gornado")
|
||||
end,
|
||||
},
|
||||
{
|
||||
name = 'tests',
|
||||
matcher = function(buf)
|
||||
return (buf.name or ""):lower():match("*test*%.cpp$")
|
||||
end,
|
||||
},
|
||||
{
|
||||
name = 'code',
|
||||
matcher = function(buf)
|
||||
return (buf.name or ""):lower():match("%.h$")
|
||||
or (buf.name or ""):lower():match("%.c$")
|
||||
or (buf.name or ""):lower():match("%.cpp$")
|
||||
end,
|
||||
},
|
||||
},
|
||||
hidden = false,
|
||||
{
|
||||
name = 'gornado',
|
||||
matcher = function(buf)
|
||||
return (buf.path or ""):lower():match("gornado")
|
||||
end,
|
||||
},
|
||||
buffer_close_icon = '',
|
||||
modified_icon = '● ',
|
||||
close_icon = ' ',
|
||||
left_trunc_marker = ' ',
|
||||
right_trunc_marker = ' ',
|
||||
max_name_length = 18,
|
||||
max_prefix_length = 15,
|
||||
truncate_names = true,
|
||||
tab_size = 18,
|
||||
offsets = {
|
||||
{
|
||||
filetype = "NvimTree",
|
||||
text = "File Explorer",
|
||||
text_align = "left",
|
||||
separator = true
|
||||
}
|
||||
{
|
||||
name = 'tests',
|
||||
matcher = function(buf)
|
||||
return (buf.name or ""):lower():match("*test*%.cpp$")
|
||||
end,
|
||||
},
|
||||
color_icons = true,
|
||||
get_element_icon = function(element)
|
||||
local icon, hl = require('nvim-web-devicons').get_icon_by_filetype(element.filetype, { default = false })
|
||||
return icon, hl
|
||||
end,
|
||||
show_buffer_icons = true,
|
||||
show_buffer_close_icons = true,
|
||||
show_close_icon = true,
|
||||
show_tab_indicators = true,
|
||||
separator_style = "slant",
|
||||
enforce_regular_tabs = false,
|
||||
always_show_bufferline = true,
|
||||
auto_toggle_bufferline = true,
|
||||
hover = {
|
||||
enabled = true,
|
||||
delay = 200,
|
||||
reveal = {'close'}
|
||||
{
|
||||
name = 'code',
|
||||
matcher = function(buf)
|
||||
return (buf.name or ""):lower():match("%.h$")
|
||||
or (buf.name or ""):lower():match("%.c$")
|
||||
or (buf.name or ""):lower():match("%.cpp$")
|
||||
end,
|
||||
},
|
||||
pick = {
|
||||
alphabet = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890",
|
||||
},
|
||||
}
|
||||
},
|
||||
hidden = false,
|
||||
},
|
||||
buffer_close_icon = '',
|
||||
modified_icon = '● ',
|
||||
close_icon = ' ',
|
||||
left_trunc_marker = ' ',
|
||||
right_trunc_marker = ' ',
|
||||
max_name_length = 18,
|
||||
max_prefix_length = 15,
|
||||
truncate_names = true,
|
||||
tab_size = 18,
|
||||
offsets = {
|
||||
{
|
||||
filetype = "NvimTree",
|
||||
text = "File Explorer",
|
||||
text_align = "left",
|
||||
separator = true
|
||||
}
|
||||
},
|
||||
color_icons = true,
|
||||
get_element_icon = function(element)
|
||||
local icon, hl = require('nvim-web-devicons').get_icon_by_filetype(element.filetype, { default = false })
|
||||
return icon, hl
|
||||
end,
|
||||
show_buffer_icons = true,
|
||||
show_buffer_close_icons = true,
|
||||
show_close_icon = true,
|
||||
show_tab_indicators = true,
|
||||
separator_style = "slant",
|
||||
enforce_regular_tabs = false,
|
||||
always_show_bufferline = true,
|
||||
auto_toggle_bufferline = true,
|
||||
hover = {
|
||||
enabled = true,
|
||||
delay = 200,
|
||||
reveal = { 'close' }
|
||||
},
|
||||
pick = {
|
||||
alphabet = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ map("n", "<leader>bt", "<cmd>BufferLineGroupToggle tests<CR>", { desc = "Toggle
|
|||
map("n", "<leader>bc", "<cmd>BufferLineGroupToggle code<CR>", { desc = "Toggle 'code' group" })
|
||||
map("n", "<leader>bp", "<cmd>BufferLineGroupToggle tornado<CR>", { desc = "Toggle 'tornado' group" })
|
||||
map("n", "<leader>bg", "<cmd>BufferLineGroupToggle gornado<CR>", { desc = "Toggle 'gornado' group" })
|
||||
map("n", "<leader>br", "<cmd>BufferRename<CR>", { desc = "Rename buffer label" })
|
||||
|
||||
|
||||
-- ========== Git ============= --
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue