[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

@ -49,12 +49,14 @@ vim.cmd [[
addGitTopLevelDirectoryToRuntimePath() addGitTopLevelDirectoryToRuntimePath()
require 'autocommands' require 'autocommands'
require 'colors'
require 'configuration' require 'configuration'
require 'diagnostics' require 'diagnostics'
require 'treesitter' require 'treesitter'
require 'lsp' require 'lsp'
local colors = require 'colors'
colors.init()
local keys = require 'keys' local keys = require 'keys'
keys.init() keys.init()

View file

@ -4,11 +4,42 @@
-- know it can do it. This is required for most modern color themes. Apple's -- 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 -- Terminal.app doesn't have True Color support though, so make sure it's
-- off for that. -- 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", { local group = vim.api.nvim_create_augroup("ListModeTrailingWhitespace", { clear = true })
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("OptionSet", {
pattern = "list",
group = group,
callback = callback,
})
vim.api.nvim_create_autocmd("BufWinEnter", {
group = group,
callback = callback,
})
end
local function _create_autocmds()
local colorscheme_group = vim.api.nvim_create_augroup("ColorSchemeOverrides", { clear = true })
vim.api.nvim_create_autocmd("ColorScheme", {
callback = function() callback = function()
vim.cmd [[ vim.cmd [[
hi! ColorColumn cterm=NONE ctermbg=233 hi! ColorColumn cterm=NONE ctermbg=233
@ -19,25 +50,25 @@ vim.api.nvim_create_autocmd("ColorScheme", {
]] ]]
end, end,
group = colorscheme_group, group = colorscheme_group,
}) })
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "default", pattern = "default",
callback = function() callback = function()
vim.cmd [[ hi! NormalFloat ctermfg=8 ]] vim.cmd [[ hi! NormalFloat ctermfg=8 ]]
end, end,
group = colorscheme_group, group = colorscheme_group,
}) })
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "dracula", pattern = "dracula",
callback = function() callback = function()
vim.cmd [[ highlight CursorLineNr guibg=#44475a ]] vim.cmd [[ highlight CursorLineNr guibg=#44475a ]]
end, end,
group = colorscheme_group, group = colorscheme_group,
}) })
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "witchhazel", pattern = "witchhazel",
callback = function() callback = function()
vim.cmd [[ vim.cmd [[
@ -46,9 +77,9 @@ vim.api.nvim_create_autocmd("ColorScheme", {
]] ]]
end, end,
group = colorscheme_group, group = colorscheme_group,
}) })
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "zaibatsu", pattern = "zaibatsu",
callback = function() callback = function()
vim.cmd [[ vim.cmd [[
@ -57,6 +88,16 @@ vim.api.nvim_create_autocmd("ColorScheme", {
]] ]]
end, end,
group = colorscheme_group, group = colorscheme_group,
}) })
end
vim.cmd [[ color zaibatsu ]] local function init_colors()
_highlight_trailing_whitespace()
_create_autocmds()
vim.cmd [[ color zaibatsu ]]
end
return {
init = init_colors
}