nix-community.nixvim/plugins/utils/cursorline.nix
2023-06-14 23:02:10 +02:00

65 lines
1.6 KiB
Nix

{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.plugins.cursorline;
helpers = import ../helpers.nix {inherit lib;};
in {
options.plugins.cursorline =
helpers.extraOptionsOptions
// {
enable = mkEnableOption "nvim-cursorline";
package = helpers.mkPackageOption "nvim-cursorline" pkgs.vimPlugins.nvim-cursorline;
cursorline = {
enable =
helpers.defaultNullOpts.mkBool true
"Show / hide cursorline in connection with cursor moving.";
timeout =
helpers.defaultNullOpts.mkInt 1000
"Time (in ms) after which the cursorline appears.";
number =
helpers.defaultNullOpts.mkBool false
"Whether to also highlight the line number.";
};
cursorword = {
enable = helpers.defaultNullOpts.mkBool true "Underlines the word under the cursor.";
minLength = helpers.defaultNullOpts.mkInt 3 "Minimum length for underlined words.";
hl =
helpers.defaultNullOpts.mkNullable
types.attrs
"{underline = true;}"
"Highliht definition map for cursorword highlighting.";
};
};
config = let
options =
{
cursorline = with cfg.cursorline; {
inherit enable timeout number;
};
cursorword = with cfg.cursorword; {
inherit enable;
min_length = minLength;
inherit hl;
};
}
// cfg.extraOptions;
in
mkIf cfg.enable {
extraPlugins = [cfg.package];
extraConfigLua = ''
require('nvim-cursorline').setup(${helpers.toLuaObject options})
'';
};
}