After hours of trying out different plugins the closest I could find is the lualine & tabby combination:
About to test it during work, at first look it looks like it has everything I need, only shows current buffers in tab, and in correct order
local lualine_theme = require("highlight").lualine_theme
require("lualine").setup({
options = {
icons_enabled = true,
theme = lualine_theme,
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
globalstatus = true,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
},
},
sections = {
lualine_a = { "branch" },
lualine_b = { empty_section },
lualine_c = {},
lualine_x = {},
lualine_y = { { "diagnostics", sections = { "error", "warn" } } },
lualine_z = { "location" },
},
inactive_sections = {},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = { "fugitive", "nvim-tree" },
})
local theme = {
fill = "TabLineFill",
-- Also you can do this: fill = { fg='#f2e9de', bg='#907aa9', style='italic' }
head = "TabLine",
current = "TabLineSel",
tab = "TabLine",
win = "TabLine",
tail = "TabLine",
}
vim.o.showtabline = 2
local tabby_theme = require("highlight").tabby_theme
require("tabby.tabline").set(function(line)
return {
line.tabs().foreach(function(tab)
local hl = tab.is_current() and tabby_theme.current or tabby_theme.tab
return {
line.sep("", hl, tabby_theme.fill),
tab.number(),
tab.name(),
line.sep("", hl, tabby_theme.fill),
hl = hl,
margin = " ",
}
end),
line.spacer(),
line.wins_in_tab(line.api.get_current_tab()).foreach(function(win)
local hl = win.is_current() and tabby_theme.current or tabby_theme.tab
return {
line.sep("", hl, tabby_theme.fill),
win.buf_name(),
line.sep("", hl, tabby_theme.fill),
hl = hl,
margin = " ",
}
end),
hl = tabby_theme.fill,
}
end)