-
-
Notifications
You must be signed in to change notification settings - Fork 213
/
adapters.nix
59 lines (52 loc) · 1.64 KB
/
adapters.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
lib,
config,
helpers,
pkgs,
...
}:
with lib;
let
supportedAdapters = import ./adapters-list.nix;
mkAdapter =
name:
{
treesitter-parser,
packageName ? "neotest-${name}",
settingsSuffix ? settingsLua: "(${settingsLua})",
}:
{
options.plugins.neotest.adapters.${name} = {
enable = mkEnableOption name;
package = helpers.mkPluginPackageOption name pkgs.vimPlugins.${packageName};
settings = helpers.mkSettingsOption { description = "settings for the `${name}` adapter."; };
};
config =
let
cfg = config.plugins.neotest.adapters.${name};
in
mkIf cfg.enable {
extraPlugins = [ cfg.package ];
assertions = [
{
assertion = config.plugins.neotest.enable;
message = "Nixvim: you have enabled `plugins.neotest.adapters.${name}` but `plugins.neotest.enable` is `false`.";
}
];
warnings = optional (!config.plugins.treesitter.enable) ''
Nixvim (plugins.neotest.adapters.${name}): This adapter requires `treesitter` to be enabled.
You might want to set `plugins.treesitter.enable = true` and ensure that the `${props.treesitter-parser}` parser is enabled.
'';
plugins.neotest.settings.adapters =
let
settingsString = optionalString (cfg.settings != { }) (
settingsSuffix (helpers.toLuaObject cfg.settings)
);
in
[ "require('neotest-${name}')${settingsString}" ];
};
};
in
{
imports = mapAttrsToList mkAdapter supportedAdapters;
}