2023-11-22 09:38:52 +01:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
config,
|
|
|
|
helpers,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
with lib; let
|
|
|
|
supportedAdapters = import ./adapters-list.nix;
|
|
|
|
|
2024-03-18 14:43:48 +01:00
|
|
|
mkAdapter = name: {
|
|
|
|
treesitter-parser,
|
|
|
|
settingsSuffix ? settingsLua: "(${settingsLua})",
|
|
|
|
}: {
|
2023-11-22 09:38:52 +01:00
|
|
|
options.plugins.neotest.adapters.${name} = {
|
|
|
|
enable = mkEnableOption name;
|
|
|
|
|
|
|
|
package = helpers.mkPackageOption name pkgs.vimPlugins."neotest-${name}";
|
|
|
|
|
|
|
|
settings = helpers.mkSettingsOption {
|
|
|
|
description = "settings for the `${name}` adapter.";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = let
|
|
|
|
cfg = config.plugins.neotest.adapters.${name};
|
|
|
|
in
|
|
|
|
mkIf cfg.enable {
|
|
|
|
extraPlugins = [cfg.package];
|
|
|
|
|
|
|
|
warnings =
|
|
|
|
optional
|
|
|
|
(!config.plugins.treesitter.enable)
|
|
|
|
''
|
|
|
|
Nixvim (plugins.neotest.adapters.${name}): This adapter requires `treesitter` to be enabled.
|
2024-03-18 14:43:48 +01:00
|
|
|
You might want to set `plugins.treesitter.enable = true` and ensure that the `${props.treesitter-parser}` parser is enabled.
|
2023-11-22 09:38:52 +01:00
|
|
|
'';
|
|
|
|
|
2024-03-19 10:11:49 +01:00
|
|
|
plugins.neotest.settings.adapters = let
|
|
|
|
settingsString =
|
|
|
|
optionalString
|
|
|
|
(cfg.settings != {})
|
2024-03-18 14:43:48 +01:00
|
|
|
(settingsSuffix (helpers.toLuaObject cfg.settings));
|
2024-03-19 10:11:49 +01:00
|
|
|
in [
|
|
|
|
"require('neotest-${name}')${settingsString}"
|
2023-11-22 09:38:52 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in {
|
|
|
|
imports = mapAttrsToList mkAdapter supportedAdapters;
|
|
|
|
}
|