nix-community.nixvim/modules/highlights.nix

85 lines
1.8 KiB
Nix
Raw Normal View History

2022-11-11 02:15:23 +00:00
{
lib,
helpers,
config,
...
}:
2024-05-05 19:39:35 +02:00
with lib;
{
options = {
highlight = mkOption {
type = types.attrsOf helpers.nixvimTypes.highlight;
2024-05-05 19:39:35 +02:00
default = { };
description = "Define new highlight groups";
example = {
MacchiatoRed.fg = "#ed8796";
};
};
highlightOverride = mkOption {
type = types.attrsOf helpers.nixvimTypes.highlight;
2024-05-05 19:39:35 +02:00
default = { };
description = "Define highlight groups to override existing highlight";
example = {
Comment.fg = "#ff0000";
};
};
match = mkOption {
type = types.attrsOf types.str;
2024-05-05 19:39:35 +02:00
default = { };
description = "Define match groups";
example = {
ExtraWhitespace = "\\s\\+$";
};
};
};
config = {
extraConfigLuaPre =
2024-05-05 19:39:35 +02:00
(optionalString (config.highlight != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlight}
2022-11-11 02:15:23 +00:00
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
end
end
-- }}
2024-05-05 19:39:35 +02:00
''
)
+ (optionalString (config.match != { })
# lua
''
-- Match groups {{
do
local match = ${helpers.toLuaObject config.match}
2022-11-11 02:15:23 +00:00
for k,v in pairs(match) do
vim.fn.matchadd(k, v)
end
end
-- }}
2024-05-05 19:39:35 +02:00
''
);
extraConfigLuaPost =
2024-05-05 19:39:35 +02:00
optionalString (config.highlightOverride != { })
# lua
''
-- Highlight groups {{
do
local highlights = ${helpers.toLuaObject config.highlightOverride}
2024-05-05 19:39:35 +02:00
for k,v in pairs(highlights) do
vim.api.nvim_set_hl(0, k, v)
end
end
2024-05-05 19:39:35 +02:00
-- }}
'';
};
}