[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,59 +4,100 @@
-- 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 })
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", { local callback = function(env)
pattern = "default", local list_mode_enabled = vim.api.nvim_get_option_value("list", { })
callback = function() if list_mode_enabled then
vim.cmd [[ hi! NormalFloat ctermfg=8 ]] vim.cmd [[ highlight link TrailingWhitespace ErrorMsg ]]
end, if should_create_highlight_match then
group = colorscheme_group, 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", { vim.api.nvim_create_autocmd("OptionSet", {
pattern = "dracula", pattern = "list",
callback = function() group = group,
vim.cmd [[ highlight CursorLineNr guibg=#44475a ]] callback = callback,
end, })
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("BufWinEnter", {
pattern = "witchhazel", group = group,
callback = function() callback = callback,
vim.cmd [[ })
hi! default link LineNr CursorLineNr end
hi! default link CursorLineNr CursorLine
]]
end,
group = colorscheme_group,
})
vim.api.nvim_create_autocmd("ColorScheme", { local function _create_autocmds()
pattern = "zaibatsu", local colorscheme_group = vim.api.nvim_create_augroup("ColorSchemeOverrides", { clear = true })
callback = function()
vim.cmd [[
hi! Pmenu ctermbg=8
hi! VertSplit ctermbg=8
]]
end,
group = colorscheme_group,
})
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
}