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