modules/highlights: add highlightOverride

This commit is contained in:
Austin Horstman 2024-02-08 21:33:56 -06:00 committed by Gaétan Lepage
parent b57fb15344
commit 30bc345dee
2 changed files with 55 additions and 14 deletions

View file

@ -9,7 +9,18 @@ with lib; {
highlight = mkOption { highlight = mkOption {
type = types.attrsOf helpers.nixvimTypes.highlight; type = types.attrsOf helpers.nixvimTypes.highlight;
default = {}; default = {};
description = "Define highlight groups."; description = "Define new highlight groups";
example = ''
highlight = {
MacchiatoRed.fg = "#ed8796";
};
'';
};
highlightOverride = mkOption {
type = types.attrsOf helpers.nixvimTypes.highlight;
default = {};
description = "Define highlight groups to override existing highlight";
example = '' example = ''
highlight = { highlight = {
Comment.fg = "#ff0000"; Comment.fg = "#ff0000";
@ -31,19 +42,27 @@ with lib; {
config = { config = {
extraConfigLuaPre = extraConfigLuaPre =
(optionalString (config.highlight != {}) '' (optionalString (config.highlight != {})
-- Highlight groups {{ /*
do lua
local highlights = ${helpers.toLuaObject config.highlight} */
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlight}
for k,v in pairs(highlights) do for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v) vim.api.nvim_set_hl(0, k, v)
end
end end
end -- }}
-- }} '')
'') + (optionalString (config.match != {})
+ (optionalString (config.match != {}) '' /*
-- Match groups {{ lua
*/
''
-- Match groups {{
do do
local match = ${helpers.toLuaObject config.match} local match = ${helpers.toLuaObject config.match}
@ -51,7 +70,24 @@ with lib; {
vim.fn.matchadd(k, v) vim.fn.matchadd(k, v)
end end
end end
-- }} -- }}
''); '');
extraConfigLuaPost =
optionalString (config.highlightOverride != {})
/*
lua
*/
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlightOverride}
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
end
end
-- }}
'';
}; };
} }

View file

@ -1,7 +1,12 @@
{ {
example = { example = {
options.termguicolors = true; options.termguicolors = true;
highlight = { highlight = {
MacchiatoRed.fg = "#ed8796";
};
highlightOverride = {
Normal.fg = "#ff0000"; Normal.fg = "#ff0000";
# With raw # With raw