local function LSP_progress() if not rawget(vim, "lsp") then return "" end local Lsp = vim.lsp.util.get_progress_messages()[1] if vim.o.columns < 120 or not Lsp then return "" end local msg = Lsp.message or "" local percentage = Lsp.percentage or 0 local title = Lsp.title or "" local spinners = { "", "" } local ms = vim.loop.hrtime() / 1000000 local frame = math.floor(ms / 120) % #spinners local content = string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage) return ("%#St_LspProgress#" .. content) or "" end require('lualine').setup { options = { icons_enabled = true, theme = 'auto', component_separators = { left = '', right = '' }, section_separators = { left = '', right = '' }, disabled_filetypes = { statusline = {}, winbar = {}, }, ignore_focus = {}, always_divide_middle = true, globalstatus = false, refresh = { statusline = 1000, tabline = 1000, winbar = 1000, } }, sections = { lualine_a = { 'mode' }, lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_c = { { "filename", path = 1, symbols = { modified = "  ", readonly = "", unnamed = "" } } }, lualine_x = { LSP_progress, 'encoding', 'fileformat', 'filetype' }, lualine_y = { 'progress' }, lualine_z = { 'location' } }, inactive_sections = { lualine_a = {}, lualine_b = {}, lualine_c = { 'filename' }, lualine_x = { 'location' }, lualine_y = {}, lualine_z = {} }, tabline = {}, winbar = {}, inactive_winbar = {}, extensions = {} }