mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
plugins/neotest: move to by-name
This commit is contained in:
parent
0f83298f2c
commit
9d323f3ec7
26 changed files with 0 additions and 2 deletions
87
plugins/by-name/neotest/adapters-list.nix
Normal file
87
plugins/by-name/neotest/adapters-list.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
# List of adapter names (without the `neotest-` prefix).
|
||||
# The corresponding `pkgs.vimPlugins.neotest-NAME` package has to exist.
|
||||
# When adding a new adapter, update the tests accordingly:
|
||||
# - Add the adapter to `all-adapters` in `tests/test-sources/plugins/neotest/default.nix`
|
||||
# - Add a more complete test case in `tests/test-sources/plugins/neotest/NAME.nix`
|
||||
{
|
||||
bash = {
|
||||
treesitter-parser = "bash";
|
||||
};
|
||||
dart = {
|
||||
treesitter-parser = "dart";
|
||||
};
|
||||
deno = {
|
||||
treesitter-parser = "javascript";
|
||||
};
|
||||
dotnet = {
|
||||
treesitter-parser = "c_sharp";
|
||||
};
|
||||
elixir = {
|
||||
treesitter-parser = "elixir";
|
||||
};
|
||||
foundry = {
|
||||
treesitter-parser = "solidity";
|
||||
};
|
||||
go = {
|
||||
treesitter-parser = "go";
|
||||
};
|
||||
golang = {
|
||||
treesitter-parser = "go";
|
||||
};
|
||||
gradle = {
|
||||
treesitter-parser = "kotlin,java";
|
||||
};
|
||||
gtest = {
|
||||
treesitter-parser = "cpp";
|
||||
};
|
||||
hardhat = {
|
||||
treesitter-parser = "javascript";
|
||||
packageName = "hardhat-nvim";
|
||||
};
|
||||
haskell = {
|
||||
treesitter-parser = "haskell";
|
||||
};
|
||||
java = {
|
||||
treesitter-parser = "java";
|
||||
};
|
||||
jest = {
|
||||
treesitter-parser = "javascript";
|
||||
};
|
||||
minitest = {
|
||||
treesitter-parser = "ruby";
|
||||
};
|
||||
pest = {
|
||||
treesitter-parser = "php";
|
||||
};
|
||||
phpunit = {
|
||||
treesitter-parser = "php";
|
||||
};
|
||||
playwright = {
|
||||
treesitter-parser = "typescript";
|
||||
settingsSuffix = settingsLua: ".adapter(${settingsLua})";
|
||||
};
|
||||
plenary = {
|
||||
treesitter-parser = "lua";
|
||||
};
|
||||
python = {
|
||||
treesitter-parser = "python";
|
||||
};
|
||||
rspec = {
|
||||
treesitter-parser = "ruby";
|
||||
};
|
||||
rust = {
|
||||
treesitter-parser = "rust";
|
||||
};
|
||||
scala = {
|
||||
treesitter-parser = "scala";
|
||||
};
|
||||
testthat = {
|
||||
treesitter-parser = "r";
|
||||
};
|
||||
vitest = {
|
||||
treesitter-parser = "javascript";
|
||||
};
|
||||
zig = {
|
||||
treesitter-parser = "zig";
|
||||
};
|
||||
}
|
62
plugins/by-name/neotest/adapters.nix
Normal file
62
plugins/by-name/neotest/adapters.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
inherit (lib.nixvim) mkSettingsOption toLuaObject;
|
||||
supportedAdapters = import ./adapters-list.nix;
|
||||
|
||||
mkAdapter =
|
||||
name:
|
||||
{
|
||||
treesitter-parser,
|
||||
packageName ? "neotest-${name}",
|
||||
settingsSuffix ? settingsLua: "(${settingsLua})",
|
||||
}:
|
||||
{
|
||||
options.plugins.neotest.adapters.${name} = {
|
||||
enable = mkEnableOption name;
|
||||
|
||||
package = lib.mkPackageOption pkgs name {
|
||||
default = [
|
||||
"vimPlugins"
|
||||
packageName
|
||||
];
|
||||
};
|
||||
|
||||
settings = 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 (toLuaObject cfg.settings));
|
||||
in
|
||||
[ "require('neotest-${name}')${settingsString}" ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = mapAttrsToList mkAdapter supportedAdapters;
|
||||
}
|
40
plugins/by-name/neotest/default.nix
Normal file
40
plugins/by-name/neotest/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
inherit (lib.nixvim) mkRaw;
|
||||
in
|
||||
lib.nixvim.neovim-plugin.mkNeovimPlugin {
|
||||
name = "neotest";
|
||||
|
||||
maintainers = [ maintainers.GaetanLepage ];
|
||||
|
||||
imports = [ ./adapters.nix ];
|
||||
|
||||
settingsOptions = (import ./options.nix { inherit lib; }) // {
|
||||
adapters = mkOption {
|
||||
type = with types; listOf strLua;
|
||||
default = [ ];
|
||||
apply = map mkRaw;
|
||||
# NOTE: We hide this option from the documentation as users should use the top-level
|
||||
# `adapters` option.
|
||||
# They can still directly append raw lua code to this `settings.adapters` option.
|
||||
# In this case, they are responsible for explicitly installing the manually added adapters.
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
|
||||
settingsExample = {
|
||||
quickfix.enabled = false;
|
||||
output = {
|
||||
enabled = true;
|
||||
open_on_run = true;
|
||||
};
|
||||
output_panel = {
|
||||
enabled = true;
|
||||
open = "botright split | resize 15";
|
||||
};
|
||||
};
|
||||
}
|
225
plugins/by-name/neotest/options.nix
Normal file
225
plugins/by-name/neotest/options.nix
Normal file
|
@ -0,0 +1,225 @@
|
|||
{ lib }:
|
||||
with lib;
|
||||
let
|
||||
inherit (lib.nixvim) defaultNullOpts mkNullOrOption mkNullOrLuaFn;
|
||||
in
|
||||
{
|
||||
#################################################
|
||||
# CoreConfig
|
||||
|
||||
discovery = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable discovery.";
|
||||
|
||||
concurrent = defaultNullOpts.mkUnsignedInt 0 ''
|
||||
Number of workers to parse files concurrently.
|
||||
0 automatically assigns number based on CPU.
|
||||
Set to 1 if experiencing lag.
|
||||
'';
|
||||
|
||||
filter_dir = mkNullOrLuaFn ''
|
||||
`fun(name: string, rel_path: string, root: string): boolean`
|
||||
|
||||
A function to filter directories when searching for test files.
|
||||
Receives the name, path relative to project root and project root path.
|
||||
'';
|
||||
};
|
||||
|
||||
running = {
|
||||
concurrent = defaultNullOpts.mkBool true ''
|
||||
Run tests concurrently when an adapter provides multiple commands to run.
|
||||
'';
|
||||
};
|
||||
|
||||
default_strategy = defaultNullOpts.mkStr "integrated" ''
|
||||
The default strategy.
|
||||
'';
|
||||
|
||||
#################################################
|
||||
# Config
|
||||
|
||||
log_level = defaultNullOpts.mkLogLevel "warn" ''
|
||||
Minimum log levels.
|
||||
'';
|
||||
|
||||
consumers = defaultNullOpts.mkAttrsOf types.strLuaFn { } ''
|
||||
key: string
|
||||
value: lua function
|
||||
'';
|
||||
|
||||
icons = defaultNullOpts.mkAttrsOf (with types; either str (listOf str)) {
|
||||
child_indent = "│";
|
||||
child_prefix = "├";
|
||||
collapsed = "─";
|
||||
expanded = "╮";
|
||||
failed = "";
|
||||
final_child_indent = " ";
|
||||
final_child_prefix = "╰";
|
||||
non_collapsible = "─";
|
||||
passed = "";
|
||||
running = "";
|
||||
running_animated = [
|
||||
"/"
|
||||
"|"
|
||||
"\\"
|
||||
"-"
|
||||
"/"
|
||||
"|"
|
||||
"\\"
|
||||
"-"
|
||||
];
|
||||
skipped = "";
|
||||
unknown = "";
|
||||
watching = "";
|
||||
} "Icons used throughout the UI. Defaults use VSCode's codicons.";
|
||||
|
||||
highlights = defaultNullOpts.mkAttrsOf types.str {
|
||||
adapter_name = "NeotestAdapterName";
|
||||
border = "NeotestBorder";
|
||||
dir = "NeotestDir";
|
||||
expand_marker = "NeotestExpandMarker";
|
||||
failed = "NeotestFailed";
|
||||
file = "NeotestFile";
|
||||
focused = "NeotestFocused";
|
||||
indent = "NeotestIndent";
|
||||
marked = "NeotestMarked";
|
||||
namespace = "NeotestNamespace";
|
||||
passed = "NeotestPassed";
|
||||
running = "NeotestRunning";
|
||||
select_win = "NeotestWinSelect";
|
||||
skipped = "NeotestSkipped";
|
||||
target = "NeotestTarget";
|
||||
test = "NeotestTest";
|
||||
unknown = "NeotestUnknown";
|
||||
watching = "NeotestWatching";
|
||||
} "";
|
||||
|
||||
floating = {
|
||||
border = defaultNullOpts.mkStr "rounded" "Border style.";
|
||||
|
||||
max_height = defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) 0.6 ''
|
||||
Max height of window as proportion of NeoVim window.
|
||||
'';
|
||||
|
||||
max_width = defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) 0.6 ''
|
||||
Max width of window as proportion of NeoVim window.
|
||||
'';
|
||||
|
||||
options = defaultNullOpts.mkAttrsOf types.anything { } ''
|
||||
Window local options to set on floating windows (e.g. winblend).
|
||||
'';
|
||||
};
|
||||
|
||||
strategies = {
|
||||
integrated = {
|
||||
height = defaultNullOpts.mkUnsignedInt 40 ''
|
||||
height to pass to the pty running commands.
|
||||
'';
|
||||
|
||||
width = defaultNullOpts.mkUnsignedInt 120 ''
|
||||
Width to pass to the pty running commands.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
summary = {
|
||||
enabled = defaultNullOpts.mkBool true "Whether to enable summary.";
|
||||
|
||||
animated = defaultNullOpts.mkBool true "Enable/disable animation of icons.";
|
||||
|
||||
follow = defaultNullOpts.mkBool true "Expand user's current file.";
|
||||
|
||||
expandErrors = defaultNullOpts.mkBool true "Expand all failed positions.";
|
||||
|
||||
mappings = defaultNullOpts.mkAttrsOf (with types; either str (listOf str)) {
|
||||
attach = "a";
|
||||
clear_marked = "M";
|
||||
clear_target = "T";
|
||||
debug = "d";
|
||||
debug_marked = "D";
|
||||
expand = [
|
||||
"<CR>"
|
||||
"<2-LeftMouse>"
|
||||
];
|
||||
expand_all = "e";
|
||||
jumpto = "i";
|
||||
mark = "m";
|
||||
next_failed = "J";
|
||||
output = "o";
|
||||
prev_failed = "K";
|
||||
run = "r";
|
||||
run_marked = "R";
|
||||
short = "O";
|
||||
stop = "u";
|
||||
target = "t";
|
||||
watch = "w";
|
||||
} "Buffer mappings for summary window.";
|
||||
|
||||
open = defaultNullOpts.mkStr "botright vsplit | vertical resize 50" ''
|
||||
A command or function to open a window for the summary.
|
||||
Either a string or a function that returns an integer.
|
||||
'';
|
||||
};
|
||||
|
||||
output = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable output.";
|
||||
|
||||
open_on_run = defaultNullOpts.mkNullable (with types; either str bool) "short" ''
|
||||
Open nearest test result after running.
|
||||
'';
|
||||
};
|
||||
|
||||
output_panel = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable output panel.";
|
||||
|
||||
open = defaultNullOpts.mkStr "botright split | resize 15" ''
|
||||
A command or function to open a window for the output panel.
|
||||
Either a string or a function that returns an integer.
|
||||
'';
|
||||
};
|
||||
|
||||
quickfix = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable quickfix.";
|
||||
|
||||
open = defaultNullOpts.mkNullable (with types; either bool str) false ''
|
||||
Set to true to open quickfix on startup, or a function to be called when the quickfix
|
||||
results are set.
|
||||
'';
|
||||
};
|
||||
|
||||
status = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable status.";
|
||||
|
||||
virtual_text = defaultNullOpts.mkBool false "Display status using virtual text.";
|
||||
|
||||
signs = defaultNullOpts.mkBool true "Display status using signs.";
|
||||
};
|
||||
|
||||
state = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable state.";
|
||||
};
|
||||
|
||||
watch = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable watch.";
|
||||
|
||||
symbol_queries = mkNullOrOption (with types; attrsOf (maybeRaw str)) ''
|
||||
Treesitter queries or functions to capture symbols that are used for querying the LSP
|
||||
server for definitions to link files.
|
||||
If it is a function then the return value should be a list of node ranges.
|
||||
'';
|
||||
|
||||
filter_path = mkNullOrLuaFn ''
|
||||
`(fun(path: string, root: string): boolean)`
|
||||
|
||||
Returns whether the watcher should inspect a path for dependencies.
|
||||
Default ignores paths not under root or common package manager directories.
|
||||
'';
|
||||
};
|
||||
|
||||
diagnostic = {
|
||||
enabled = defaultNullOpts.mkBool true "Enable diagnostic.";
|
||||
|
||||
severity = defaultNullOpts.mkSeverity "error" ''
|
||||
Diagnostic severity, one of `vim.diagnostic.severity`.
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue