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')
|
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 {
|
bufferline.setup {
|
||||||
options = {
|
options = {
|
||||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
name_formatter = function(buf)
|
||||||
style_preset = bufferline.style_preset.default,
|
return vim.b[buf.bufnr].bufferline_name or buf.name
|
||||||
themable = true,
|
end,
|
||||||
indicator = {
|
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||||
icon = '▎',
|
style_preset = bufferline.style_preset.default,
|
||||||
style = 'icon',
|
themable = true,
|
||||||
|
indicator = {
|
||||||
|
icon = '▎',
|
||||||
|
style = 'icon',
|
||||||
|
},
|
||||||
|
groups = {
|
||||||
|
items = {
|
||||||
|
{
|
||||||
|
name = 'tornado',
|
||||||
|
matcher = function(buf)
|
||||||
|
return (buf.path or ""):lower():match("tornado")
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
groups = {
|
{
|
||||||
items = {
|
name = 'gornado',
|
||||||
{
|
matcher = function(buf)
|
||||||
name = 'tornado',
|
return (buf.path or ""):lower():match("gornado")
|
||||||
matcher = function(buf)
|
end,
|
||||||
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,
|
|
||||||
},
|
},
|
||||||
buffer_close_icon = '',
|
{
|
||||||
modified_icon = '● ',
|
name = 'tests',
|
||||||
close_icon = ' ',
|
matcher = function(buf)
|
||||||
left_trunc_marker = ' ',
|
return (buf.name or ""):lower():match("*test*%.cpp$")
|
||||||
right_trunc_marker = ' ',
|
end,
|
||||||
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)
|
name = 'code',
|
||||||
local icon, hl = require('nvim-web-devicons').get_icon_by_filetype(element.filetype, { default = false })
|
matcher = function(buf)
|
||||||
return icon, hl
|
return (buf.name or ""):lower():match("%.h$")
|
||||||
end,
|
or (buf.name or ""):lower():match("%.c$")
|
||||||
show_buffer_icons = true,
|
or (buf.name or ""):lower():match("%.cpp$")
|
||||||
show_buffer_close_icons = true,
|
end,
|
||||||
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",
|
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>bc", "<cmd>BufferLineGroupToggle code<CR>", { desc = "Toggle 'code' group" })
|
||||||
map("n", "<leader>bp", "<cmd>BufferLineGroupToggle tornado<CR>", { desc = "Toggle 'tornado' 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>bg", "<cmd>BufferLineGroupToggle gornado<CR>", { desc = "Toggle 'gornado' group" })
|
||||||
|
map("n", "<leader>br", "<cmd>BufferRename<CR>", { desc = "Rename buffer label" })
|
||||||
|
|
||||||
|
|
||||||
-- ========== Git ============= --
|
-- ========== Git ============= --
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue