[nvim] Autocmd to highlight trailing whitespace using ErrorMsg

Additionally refactor the colors lua module into one with an init function that
init.lua can invoke.
This commit is contained in:
Eryn Wells 2026-02-06 08:08:04 -08:00
parent 929f951391
commit c58625cc89
2 changed files with 93 additions and 50 deletions

View file

@ -4,59 +4,100 @@
-- know it can do it. This is required for most modern color themes. Apple's
-- Terminal.app doesn't have True Color support though, so make sure it's
-- off for that.
vim.g.termguicolors = not vim.env.TERM_PROGRAM == "Apple_Terminal"
--vim.g.termguicolors = not vim.env.TERM_PROGRAM == "Apple_Terminal"
local colorscheme_group = vim.api.nvim_create_augroup("ColorSchemeOverrides", { clear = true })
local function _highlight_trailing_whitespace()
local should_create_highlight_match = true
vim.api.nvim_create_autocmd("ColorScheme", {
callback = function()
vim.cmd [[
hi! ColorColumn cterm=NONE ctermbg=233
hi! CursorColumn cterm=NONE ctermbg=233
hi! CursorLine cterm=NONE ctermbg=233
hi! CursorLineNr cterm=bold ctermfg=White ctermbg=233
hi! LineNr ctermfg=DarkGray ctermbg=233
]]
end,
group = colorscheme_group,
})
local group = vim.api.nvim_create_augroup("ListModeTrailingWhitespace", { clear = true })
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "default",
callback = function()
vim.cmd [[ hi! NormalFloat ctermfg=8 ]]
end,
group = colorscheme_group,
})
local callback = function(env)
local list_mode_enabled = vim.api.nvim_get_option_value("list", { })
if list_mode_enabled then
vim.cmd [[ highlight link TrailingWhitespace ErrorMsg ]]
if should_create_highlight_match then
vim.cmd [[ match TrailingWhitespace /\v\s+$/ ]]
should_create_highlight_match = false
end
else
vim.cmd [[ highlight clear TrailingWhitespace ]]
end
end
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "dracula",
callback = function()
vim.cmd [[ highlight CursorLineNr guibg=#44475a ]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("OptionSet", {
pattern = "list",
group = group,
callback = callback,
})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "witchhazel",
callback = function()
vim.cmd [[
hi! default link LineNr CursorLineNr
hi! default link CursorLineNr CursorLine
]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("BufWinEnter", {
group = group,
callback = callback,
})
end
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "zaibatsu",
callback = function()
vim.cmd [[
hi! Pmenu ctermbg=8
hi! VertSplit ctermbg=8
]]
end,
group = colorscheme_group,
})
local function _create_autocmds()
local colorscheme_group = vim.api.nvim_create_augroup("ColorSchemeOverrides", { clear = true })
vim.cmd [[ color zaibatsu ]]
vim.api.nvim_create_autocmd("ColorScheme", {
callback = function()
vim.cmd [[
hi! ColorColumn cterm=NONE ctermbg=233
hi! CursorColumn cterm=NONE ctermbg=233
hi! CursorLine cterm=NONE ctermbg=233
hi! CursorLineNr cterm=bold ctermfg=White ctermbg=233
hi! LineNr ctermfg=DarkGray ctermbg=233
]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "default",
callback = function()
vim.cmd [[ hi! NormalFloat ctermfg=8 ]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "dracula",
callback = function()
vim.cmd [[ highlight CursorLineNr guibg=#44475a ]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "witchhazel",
callback = function()
vim.cmd [[
hi! default link LineNr CursorLineNr
hi! default link CursorLineNr CursorLine
]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "zaibatsu",
callback = function()
vim.cmd [[
hi! Pmenu ctermbg=8
hi! VertSplit ctermbg=8
]]
end,
group = colorscheme_group,
})
end
local function init_colors()
_highlight_trailing_whitespace()
_create_autocmds()
vim.cmd [[ color zaibatsu ]]
end
return {
init = init_colors
}