nvim/lua/plugins/tabline.lua
2025-02-26 11:22:27 +01:00

87 lines
2.1 KiB
Lua

return {
"nvim-lualine/lualine.nvim",
dependencies = {
{ "kyazdani42/nvim-web-devicons", lazy = true },
"crater2150/vim-theme-chroma",
{
"linrongbin16/lsp-progress.nvim",
config = function()
require("lsp-progress").setup()
end,
},
},
event = "VeryLazy",
opts = function(_, opts)
return {
options = {
theme = require("chroma-theme.lualine"),
},
tabline = {
lualine_a = { "branch" },
lualine_b = {},
lualine_c = {
{
"buffers",
show_filename_only = false,
symbols = { modified = " ✏️]", alternate_file = " 🔃", folder = " 📁" },
},
},
lualine_x = {},
lualine_y = {},
lualine_z = {
{
"tabs",
mode = 1,
fmt = function(name, context)
local buflist = vim.fn.tabpagebuflist(context.tabnr)
local mod = not vim.tbl_isempty(vim.tbl_filter(function(bufnr)
return vim.fn.getbufvar(bufnr, "&mod") == 1
end, buflist))
local wincount = #vim.tbl_filter(function(i)
return i == "leaf"
end, vim.tbl_flatten(vim.fn.winlayout(context.tabnr)))
return name
.. (wincount > 1 and " +" .. (wincount - 1) or "")
.. (mod and " [✏️]]" or "")
end,
},
},
},
sections = {
lualine_a = { "filename" },
lualine_b = { "diff", "diagnostics" },
lualine_x = {
function()
-- invoke `progress` here.
return require("lsp-progress").progress()
end,
},
lualine_y = { "filetype" },
lualine_z = { "searchcount", "selectioncount", "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
winbar = {},
inactive_winbar = {},
extensions = {},
}
end,
config = function(_, opts)
require("lualine").setup(opts)
vim.api.nvim_create_augroup("lualine_augroup", { clear = true })
vim.api.nvim_create_autocmd("User", {
group = "lualine_augroup",
pattern = "LspProgressStatusUpdated",
callback = require("lualine").refresh,
})
end,
}