nix-community.nixvim/plugins/neotest/adapters.nix

53 lines
1.4 KiB
Nix
Raw Normal View History

2023-11-22 09:38:52 +01:00
{
lib,
config,
helpers,
pkgs,
...
}:
2024-05-05 19:39:35 +02:00
with lib;
let
2023-11-22 09:38:52 +01:00
supportedAdapters = import ./adapters-list.nix;
2024-05-05 19:39:35 +02:00
mkAdapter =
name:
{
treesitter-parser,
packageName ? "neotest-${name}",
settingsSuffix ? settingsLua: "(${settingsLua})",
}:
{
options.plugins.neotest.adapters.${name} = {
enable = mkEnableOption name;
2023-11-22 09:38:52 +01:00
package = helpers.mkPluginPackageOption name pkgs.vimPlugins.${packageName};
2023-11-22 09:38:52 +01:00
2024-05-05 19:39:35 +02:00
settings = helpers.mkSettingsOption { description = "settings for the `${name}` adapter."; };
2023-11-22 09:38:52 +01:00
};
2024-05-05 19:39:35 +02:00
config =
let
cfg = config.plugins.neotest.adapters.${name};
in
mkIf cfg.enable {
extraPlugins = [ cfg.package ];
2023-11-22 09:38:52 +01:00
2024-05-05 19:39:35 +02:00
warnings = optional (!config.plugins.treesitter.enable) ''
2023-11-22 09:38:52 +01:00
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-05-05 19:39:35 +02:00
plugins.neotest.settings.adapters =
let
settingsString = optionalString (cfg.settings != { }) (
settingsSuffix (helpers.toLuaObject cfg.settings)
);
in
[ "require('neotest-${name}')${settingsString}" ];
};
};
in
{
2023-11-22 09:38:52 +01:00
imports = mapAttrsToList mkAdapter supportedAdapters;
}