local separator = { "|", color = "StatusLineNonText", } local non_text_hl = vim.api.nvim_get_hl(0, { name = "NonText" }) local statusline_hl = vim.api.nvim_get_hl(0, { name = "StatusLine" }) vim.api.nvim_set_hl(0, "StatusLineNonText", { fg = non_text_hl.fg, bg = statusline_hl.bg, }) local function lsp_clients() local clients = vim.lsp.get_clients({ bufnr = 0 }) if #clients == 0 then return "" end local names = {} for _, client in ipairs(clients) do names[#names + 1] = client.name end return "LSP: " .. table.concat(names, ", ") end require("lualine").setup({ options = { section_separators = '', component_separators = "", globalstatus = true, theme = { normal = { a = "StatusLine", b = "StatusLine", c = "StatusLine", }, }, }, sections = { lualine_a = { "mode", separator, }, lualine_b = { "branch", "diff", separator, lsp_clients, { "diagnostics", sources = { "nvim_diagnostic" } }, separator, }, lualine_c = { "filename", }, lualine_x = { "filetype", "encoding", "fileformat", }, lualine_y = { separator, function() return (vim.bo.expandtab and "s" or "t") .. " • " .. vim.bo.shiftwidth end, separator, }, lualine_z = { "location", "progress", }, }, })