Skip to content

Commit

Permalink
highlight: init
Browse files Browse the repository at this point in the history
  • Loading branch information
LilleAila committed Jan 19, 2025
1 parent db8a586 commit fcb6f82
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/release-notes/rl-0.8.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
- `mini.trailspace`
- `mini.visits`
- Add [fzf-lua](https://github.com/ibhagwan/fzf-lua) in `vim.fzf-lua`
- Add options to define highlights under `vim.highlight`

[kaktu5](https://github.com/kaktu5):

Expand Down
1 change: 1 addition & 0 deletions modules/neovim/init/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
imports = [
./basic.nix
./debug.nix
./highlight.nix
./spellcheck.nix
];
}
106 changes: 106 additions & 0 deletions modules/neovim/init/highlight.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
{
config,
lib,
...
}: let
inherit (lib.options) mkOption literalExpression;
inherit (lib.types) nullOr attrsOf listOf submodule bool ints str;
inherit (lib.strings) hasPrefix concatStringsSep;
inherit (lib.attrsets) mapAttrsToList;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
inherit (lib.nvim.types) hexColor;

mkColorOption = target:
mkOption {
type = nullOr hexColor;
default = null;
description = ''
The ${target} color to use. Written as color name or hex "#RRGGBB".
'';
example = "#ebdbb2";
};

mkBoolOption = name:
mkOption {
type = nullOr bool;
default = null;
description = ''Whether to enable ${name}'';
example = false;
};

cfg = config.vim.highlight;
in {
options.vim.highlight = mkOption {
type = attrsOf (submodule {
# See :h nvim_set_hl
options = {
bg = mkColorOption "background";
fg = mkColorOption "foreground";
sp = mkColorOption "special";
blend = mkOption {
type = nullOr (ints.between 0 100);
default = null;
description = "Blend as an integer between 0 and 100";
};
bold = mkBoolOption "bold";
standout = mkBoolOption "standout";
underline = mkBoolOption "underline";
undercurl = mkBoolOption "undercurl";
underdouble = mkBoolOption "underdouble";
underdotted = mkBoolOption "underdotted";
underdashed = mkBoolOption "underdashed";
strikethrough = mkBoolOption "strikethrough";
italic = mkBoolOption "italic";
reverse = mkBoolOption "reverse";
nocombine = mkBoolOption "nocombine";
link = mkOption {
type = nullOr str;
default = null;
description = "The name of another highlight group to link to";
};
default = mkOption {
type = nullOr bool;
default = null;
description = "Don't override existing definition";
};
ctermfg = mkOption {
type = nullOr str;
default = null;
description = "The cterm foreground color to use";
};
ctermbg = mkOption {
type = nullOr str;
default = null;
description = "The cterm background color to use";
};
cterm = mkOption {
type = nullOr (listOf str);
default = null;
description = "The cterm arguments to use. See :h highlight-args";
};
force = mkBoolOption "force update";
};
});
default = {};
description = "Custom highlight to apply";
example = literalExpression ''
{
SignColumn = {
bg = "#282828";
};
}
'';
};

config = {
vim.luaConfigRC.highlight = let
highlights =
mapAttrsToList (
name: value: ''vim.api.nvim_set_hl(0, ${toLuaObject name}, ${toLuaObject value})''
)
cfg;
in
entryAnywhere (concatStringsSep "\n" highlights);
};
}

0 comments on commit fcb6f82

Please sign in to comment.