-- -- Status line configuration plugin -- -- I use lualine, see https://github.com/nvim-lualine/lualine.nvim#configuring-lualine-in-initvim local lualine = require("lualine") local function spell_status() if vim.o.spelllang == "fr" then return "+S(fr)" elseif vim.o.spelllang == "en_us" then return "+S(en)" elseif vim.o.spelllang == "en_us,fr" then return "+S(en,fr)" end end local function statuses() return (vim.b.autoformat and "+F" or "") .. (vim.o.spell and spell_status() or "") end -- lualine builds its own section-b-backed highlights for the diff/diagnostics -- components (lualine_b_diff_added_normal, lualine_b_diagnostics_error_normal, -- ...). Stamp bold onto them with update=true so only the bold attribute -- changes -- fg and section b's background are left untouched. Must run after -- lualine (re)creates the groups: initial setup, theme switch, colorscheme. local function bold_diff_diag() for name in pairs(vim.api.nvim_get_hl(0, {})) do if name:find("^lualine_b_diff") or name:find("^lualine_b_diagnostics") then vim.api.nvim_set_hl(0, name, { bold = true, update = true }) end end end vim.api.nvim_create_autocmd("ColorScheme", { desc = "Re-bold lualine diff/diagnostics after colorscheme rebuild", group = vim.g.dotfiles.augroup, callback = function() vim.schedule(bold_diff_diag) end, }) local lualine_sections = { lualine_c = { statuses, "filename" }, lualine_x = { "encoding", "fileformat", "filetype", "lsp_status" }, } local lualine_options = { disabled_filetypes = { "netrw", "qf" }, component_separators = { left = "|", right = "|" }, section_separators = { left = "", right = "" }, } local function setup() lualine_options.theme = vim.o.background == "light" and "solarized_light" or "solarized_dark" lualine.setup({ options = lualine_options, sections = lualine_sections }) end -- Adjust colors when the theme (light/dark) changes vim.api.nvim_create_autocmd("OptionSet", { desc = "Adjust color scheme", pattern = "background", group = vim.g.dotfiles.augroup, callback = function() setup() vim.schedule(bold_diff_diag) end, }) setup() vim.schedule(bold_diff_diag) vim.api.nvim_create_user_command("LualineConfig", function() vim.notify(vim.inspect(lualine.get_config())) end, { desc = "Show lualine configuration" })