-- -- 50-highlight.lua -- -- * Creates a function to adjust highlight groups for the solarized colorscheme. It also sets popup -- menu width and border style. -- * Creates an autocommand to trigger this function when the background or color scheme changes. -- * Sets the default colorscheme (solarized) and background (dark). -- -- User commands: -- `ColorsBgToggle`: toggle light/dark background -- -- Adjust highlights (for the solarized theme) to fit my personal tastes. local function adjust_solarized_highlights() local colors = { blue = "#268bd2", yellow = "#b58900" } -- Window bar style vim.api.nvim_set_hl(0, "WinBarCwd", { fg = colors.blue, italic = true }) vim.api.nvim_set_hl(0, "WinBarFilePath", { italic = true }) -- Matching delimiter vim.api.nvim_set_hl(0, "MatchParen", { link = "CurSearch" }) -- Floating windows and popup menu windows follow the editor background, their borders too so -- that the popup menu border draws a clean separation. vim.opt.pumborder = "rounded" vim.opt.pumwidth = 25 -- Minimum popup menu width vim.api.nvim_set_hl(0, "NormalFloat", { link = "Normal" }) local normal_bg = vim.api.nvim_get_hl(0, { name = "Normal", link = false }).bg vim.api.nvim_set_hl(0, "FloatBorder", { bg = normal_bg, update = true }) vim.api.nvim_set_hl(0, "Pmenu", { bg = normal_bg, update = true }) vim.api.nvim_set_hl(0, "PmenuSbar", { bg = normal_bg, update = true }) -- Currently selected tabpage vim.api.nvim_set_hl(0, "TabLineSel", { fg = colors.yellow, bold = true, update = true }) -- Todo hl group vim.api.nvim_set_hl(0, "Todo", { bg = "Yellow", fg = "Black", bold = true }) end -- Adjust highlights to fit my personal tastes. local function adjust_highlights() if vim.g.colors_name == "solarized" then adjust_solarized_highlights() end end local function toggle_theme() vim.opt.background = vim.o.background == "light" and "dark" or "light" vim.notify("Color theme set to " .. vim.o.background) end ---------------------------------------------------------------------------------------------------- vim.api.nvim_create_autocmd("ColorScheme", { desc = "Adjust custom highlights", group = vim.g.dotfiles.augroup, callback = adjust_highlights, }) vim.api.nvim_create_autocmd("OptionSet", { desc = "Adjust custom highlights on theme change", pattern = "background", group = vim.g.dotfiles.augroup, callback = adjust_highlights, }) vim.api.nvim_create_user_command( "ColorsBgToggle", toggle_theme, { desc = "Toggle light/dark theme" } ) vim.cmd.colorscheme("solarized") vim.opt.background = "dark"