plugins/instant: init + test

This commit is contained in:
Gaetan Lepage 2023-08-16 12:17:19 +02:00 committed by Gaétan Lepage
parent b288ebe672
commit 9f8ce75653
4 changed files with 144 additions and 3 deletions

View file

@ -98,6 +98,7 @@
./utils/harpoon.nix ./utils/harpoon.nix
./utils/illuminate.nix ./utils/illuminate.nix
./utils/indent-blankline.nix ./utils/indent-blankline.nix
./utils/instant.nix
./utils/intellitab.nix ./utils/intellitab.nix
./utils/lastplace.nix ./utils/lastplace.nix
./utils/leap.nix ./utils/leap.nix

View file

@ -253,9 +253,11 @@ in {
description = '' description = ''
Extra configuration options for indent-blankline without the 'indent_blankline_' prefix. Extra configuration options for indent-blankline without the 'indent_blankline_' prefix.
Example: To set 'indent_blankline_foobar' to 1, write Example: To set 'indent_blankline_foobar' to 1, write
extraConfig = { ```nix
foobar = true; extraConfig = {
}; foobar = true;
};
```
''; '';
}; };
}; };

110
plugins/utils/instant.nix Normal file
View file

@ -0,0 +1,110 @@
{
lib,
pkgs,
config,
...
} @ args:
with lib; let
helpers = import ../helpers.nix args;
in {
options.plugins.instant = {
enable = mkEnableOption "instant.nvim";
package = helpers.mkPackageOption "instant" pkgs.vimPlugins.instant-nvim;
username = mkOption {
type = with types; nullOr str;
description = ''
Username.
Explicitly set to `null` if you do not want this option to be set.
'';
};
onlyCwd = helpers.defaultNullOpts.mkBool true ''
Choose whether to share files only in the current working directory in session mode.
'';
cursorHlGroupUser1 = helpers.defaultNullOpts.mkStr "Cursor" ''
Cursor highlight group for user 1.
'';
cursorHlGroupUser2 = helpers.defaultNullOpts.mkStr "Cursor" ''
Cursor highlight group for user 2.
'';
cursorHlGroupUser3 = helpers.defaultNullOpts.mkStr "Cursor" ''
Cursor highlight group for user 3.
'';
cursorHlGroupUser4 = helpers.defaultNullOpts.mkStr "Cursor" ''
Cursor highlight group for user 4.
'';
cursorHlGroupDefault = helpers.defaultNullOpts.mkStr "Cursor" ''
Cursor highlight group for any other userr.
'';
nameHlGroupUser1 = helpers.defaultNullOpts.mkStr "CursorLineNr" ''
Virtual text highlight group for user 1.
'';
nameHlGroupUser2 = helpers.defaultNullOpts.mkStr "CursorLineNr" ''
Virtual text highlight group for user 2.
'';
nameHlGroupUser3 = helpers.defaultNullOpts.mkStr "CursorLineNr" ''
Virtual text highlight group for user 3.
'';
nameHlGroupUser4 = helpers.defaultNullOpts.mkStr "CursorLineNr" ''
Virtual text highlight group for user 4.
'';
nameHlGroupDefault = helpers.defaultNullOpts.mkStr "CursorLineNr" ''
Virtual text highlight group for any other user.
'';
extraOptions = mkOption {
type = types.attrs;
default = {};
description = ''
Extra configuration options for instant without the 'instant_' prefix.
Example: To set 'instant_foobar' to 1, write
```nix
extraConfig = {
foobar = true;
};
```
'';
};
};
config = let
cfg = config.plugins.instant;
in
mkIf cfg.enable {
extraPlugins = [cfg.package];
globals =
mapAttrs'
(name: nameValuePair ("instant_" + name))
(
with cfg;
{
inherit username;
only_cwd = onlyCwd;
cursor_hl_group_user_1 = cursorHlGroupUser1;
cursor_hl_group_user_2 = cursorHlGroupUser2;
cursor_hl_group_user_3 = cursorHlGroupUser3;
cursor_hl_group_user_4 = cursorHlGroupUser4;
cursor_hl_group_default = cursorHlGroupDefault;
name_hl_group_user_1 = nameHlGroupUser1;
name_hl_group_user_2 = nameHlGroupUser2;
name_hl_group_user_3 = nameHlGroupUser3;
name_hl_group_user_4 = nameHlGroupUser4;
name_hl_group_default = nameHlGroupDefault;
}
// extraOptions
);
};
}

View file

@ -0,0 +1,28 @@
{
empty = {
plugins.instant = {
enable = true;
username = null;
};
};
example = {
plugins.instant = {
enable = true;
username = "Joe";
onlyCwd = true;
cursorHlGroupUser1 = "Cursor";
cursorHlGroupUser2 = "Cursor";
cursorHlGroupUser3 = "Cursor";
cursorHlGroupUser4 = "Cursor";
cursorHlGroupDefault = "Cursor";
nameHlGroupUser1 = "CursorLineNr";
nameHlGroupUser2 = "CursorLineNr";
nameHlGroupUser3 = "CursorLineNr";
nameHlGroupUser4 = "CursorLineNr";
nameHlGroupDefault = "CursorLineNr";
extraOptions = {};
};
};
}