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, }