A simple plugin that creates tab names that can be accessed via t:name
or vim.t.name
. Created for use with hand-crafting custom tablines.
lazy.nvim:
{
'pynappo/tabnames.nvim',
config = function() -- calling setup is optional if you want defaults as shown here:
local tabnames = require('tabnames')
tabnames.setup({
auto_suggest_names = true,
default_tab_name = function(tabnr)
return
tabnames.presets.special_tabs(tabnr)
or tabnames.presets.special_buffers(tabnr)
or tabnames.presets.short_tab_cwd(tabnr)
end,
session_support = false,
update_default_tab_name = {'TabNewEntered', 'BufEnter'},
setup_autocmds = true,
setup_commands = true,
})
end
}
:TabRename {name}
to rename the current tab. If name
is omitted, uses default_tab_name(tabnr)
to reset the tab name. Variables like %
are expanded.
:TabRenameClear
to clear the current tab name.
Tab name can be accessed through vim.t.name
, here's how I use it in my heirline.nvim setup:
tabpage = {
init = function(self) self.name = vim.t[self.tabnr].name end,
provider = function(self) return '%' .. self.tabnr .. 'T ' .. self.tabnr .. (self.name and ' ' .. self.name or '') .. '%T' end,
hl = function(self) return self.is_active and 'TabLineSel' or 'TabLine' end,
}
require('tabnames').set_tab_name(tabnr, name, opts)
- tabnr: tabpage number, can be 0 or nil for current tab
- name: string for manual naming, nil for default_tab_name
- opts: optional table with following keys:
- notify: boolean or nil - whether or not vim.notify() notifies the user of the new tab name
- returns the new tab name