plugins/nvim-lsp: Update rust-analyzer settings (#263)

This commit is contained in:
traxys 2023-03-16 11:19:34 +01:00 committed by GitHub
parent c6fa30b81c
commit 6544e32396
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 248 additions and 26 deletions

View file

@ -103,12 +103,11 @@
src = pkgs.rust-analyzer.src; src = pkgs.rust-analyzer.src;
nativeBuildInputs = with pkgs; [extractRustAnalyzerPkg alejandra nixpkgs-fmt]; nativeBuildInputs = with pkgs; [extractRustAnalyzerPkg alejandra];
buildPhase = '' buildPhase = ''
extract_rust_analyzer.py editors/code/package.json | extract_rust_analyzer.py editors/code/package.json |
alejandra --quiet | alejandra --quiet > rust-analyzer-config.nix
nixpkgs-fmt > rust-analyzer-config.nix
''; '';
installPhase = '' installPhase = ''

View file

@ -2,6 +2,19 @@
lib: lib:
with lib; { with lib; {
"assist" = { "assist" = {
"emitMustUse" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Whether to insert #[must_use] when generating `as_` methods
for enum variants.
default value is:
```nix
false
```
'';
};
"expressionFillDefault" = mkOption { "expressionFillDefault" = mkOption {
type = types.nullOr (types.enum ["todo" "default"]); type = types.nullOr (types.enum ["todo" "default"]);
default = null; default = null;
@ -68,6 +81,39 @@ with lib; {
``` ```
''; '';
}; };
"invocationLocation" = mkOption {
type = types.nullOr (types.enum ["workspace" "root"]);
default = null;
description = ''
Specifies the working directory for running build scripts.
- "workspace": run build scripts for a workspace in the workspace's root directory.
This is incompatible with `#rust-analyzer.cargo.buildScripts.invocationStrategy#` set to `once`.
- "root": run build scripts in the project's root directory.
This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`
is set.
default value is:
```nix
"workspace"
```
'';
};
"invocationStrategy" = mkOption {
type = types.nullOr (types.enum ["per_workspace" "once"]);
default = null;
description = ''
Specifies the invocation strategy to use when running the build scripts command.
If `per_workspace` is set, the command will be executed for each workspace.
If `once` is set, the command will be executed once.
This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`
is set.
default value is:
```nix
"per_workspace"
```
'';
};
"overrideCommand" = mkOption { "overrideCommand" = mkOption {
type = types.nullOr (types.nullOr (types.listOf (types.str))); type = types.nullOr (types.nullOr (types.listOf (types.str)));
default = null; default = null;
@ -105,6 +151,19 @@ with lib; {
''; '';
}; };
}; };
"extraEnv" = mkOption {
type = types.nullOr (types.attrsOf types.anything);
default = null;
description = ''
Extra environment variables that will be set when running cargo, rustc
or other commands within the workspace. Useful for setting RUSTFLAGS.
default value is:
```nix
{}
```
'';
};
"features" = mkOption { "features" = mkOption {
type = types.nullOr (types.oneOf [(types.enum ["all"]) (types.listOf (types.str))]); type = types.nullOr (types.oneOf [(types.enum ["all"]) (types.listOf (types.str))]);
default = null; default = null;
@ -131,15 +190,20 @@ with lib; {
``` ```
''; '';
}; };
"noSysroot" = mkOption { "sysroot" = mkOption {
type = types.nullOr (types.bool); type = types.nullOr (types.nullOr (types.str));
default = null; default = null;
description = '' description = ''
Internal config for debugging, disables loading of sysroot crates. Relative path to the sysroot, or "discover" to try to automatically find it via
"rustc --print sysroot".
Unsetting this disables sysroot loading.
This option does not take effect until rust-analyzer is restarted.
default value is: default value is:
```nix ```nix
false "discover"
``` ```
''; '';
}; };
@ -168,7 +232,19 @@ with lib; {
''; '';
}; };
}; };
"checkOnSave" = { "checkOnSave" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Run the check command for diagnostics on save.
default value is:
```nix
true
```
'';
};
"check" = {
"allTargets" = mkOption { "allTargets" = mkOption {
type = types.nullOr (types.bool); type = types.nullOr (types.bool);
default = null; default = null;
@ -193,18 +269,6 @@ with lib; {
``` ```
''; '';
}; };
"enable" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Run specified `cargo check` command for diagnostics on save.
default value is:
```nix
true
```
'';
};
"extraArgs" = mkOption { "extraArgs" = mkOption {
type = types.nullOr (types.listOf (types.str)); type = types.nullOr (types.listOf (types.str));
default = null; default = null;
@ -217,6 +281,19 @@ with lib; {
``` ```
''; '';
}; };
"extraEnv" = mkOption {
type = types.nullOr (types.attrsOf types.anything);
default = null;
description = ''
Extra environment variables that will be set when running `cargo check`.
Extends `#rust-analyzer.cargo.extraEnv#`.
default value is:
```nix
{}
```
'';
};
"features" = mkOption { "features" = mkOption {
type = types.nullOr (types.nullOr (types.oneOf [(types.enum ["all"]) (types.listOf (types.str))])); type = types.nullOr (types.nullOr (types.oneOf [(types.enum ["all"]) (types.listOf (types.str))]));
default = null; default = null;
@ -232,6 +309,39 @@ with lib; {
``` ```
''; '';
}; };
"invocationLocation" = mkOption {
type = types.nullOr (types.enum ["workspace" "root"]);
default = null;
description = ''
Specifies the working directory for running checks.
- "workspace": run checks for workspaces in the corresponding workspaces' root directories.
This falls back to "root" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.
- "root": run checks in the project's root directory.
This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`
is set.
default value is:
```nix
"workspace"
```
'';
};
"invocationStrategy" = mkOption {
type = types.nullOr (types.enum ["per_workspace" "once"]);
default = null;
description = ''
Specifies the invocation strategy to use when running the checkOnSave command.
If `per_workspace` is set, the command will be executed for each workspace.
If `once` is set, the command will be executed once.
This config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`
is set.
default value is:
```nix
"per_workspace"
```
'';
};
"noDefaultFeatures" = mkOption { "noDefaultFeatures" = mkOption {
type = types.nullOr (types.nullOr (types.bool)); type = types.nullOr (types.nullOr (types.bool));
default = null; default = null;
@ -251,7 +361,9 @@ with lib; {
description = '' description = ''
Override the command rust-analyzer uses instead of `cargo check` for Override the command rust-analyzer uses instead of `cargo check` for
diagnostics on save. The command is required to output json and diagnostics on save. The command is required to output json and
should therefor include `--message-format=json` or a similar option. should therefore include `--message-format=json` or a similar option
(if your client supports the `colorDiagnosticOutput` experimental
capability, you can use `--message-format=json-diagnostic-rendered-ansi`).
If you're changing this because you're using some tool wrapping If you're changing this because you're using some tool wrapping
Cargo, you might also want to change Cargo, you might also want to change
@ -274,12 +386,16 @@ with lib; {
``` ```
''; '';
}; };
"target" = mkOption { "targets" = mkOption {
type = types.nullOr (types.nullOr (types.str)); type = types.nullOr (types.nullOr (types.oneOf [(types.str) (types.listOf (types.str))]));
default = null; default = null;
description = '' description = ''
Check for a specific target. Defaults to Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.
`#rust-analyzer.cargo.target#`.
Can be a single target, e.g. `"x86_64-unknown-linux-gnu"` or a list of targets, e.g.
`["aarch64-apple-darwin", "x86_64-apple-darwin"]`.
Aliased as `"checkOnSave.targets"`.
default value is: default value is:
```nix ```nix
@ -768,6 +884,22 @@ with lib; {
''; '';
}; };
}; };
"prefer" = {
"no" = {
"std" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Prefer to unconditionally use imports of the core and alloc crate, over the std crate.
default value is:
```nix
false
```
'';
};
};
};
"prefix" = mkOption { "prefix" = mkOption {
type = types.nullOr (types.enum ["plain" "self" "crate"]); type = types.nullOr (types.enum ["plain" "self" "crate"]);
default = null; default = null;
@ -851,6 +983,58 @@ with lib; {
''; '';
}; };
}; };
"discriminantHints" = {
"enable" = mkOption {
type = types.nullOr (types.enum ["always" "never" "fieldless"]);
default = null;
description = ''
Whether to show enum variant discriminant hints.
default value is:
```nix
"never"
```
'';
};
};
"expressionAdjustmentHints" = {
"enable" = mkOption {
type = types.nullOr (types.enum ["always" "never" "reborrow"]);
default = null;
description = ''
Whether to show inlay hints for type adjustments.
default value is:
```nix
"never"
```
'';
};
"hideOutsideUnsafe" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Whether to hide inlay hints for type adjustments outside of `unsafe` blocks.
default value is:
```nix
false
```
'';
};
"mode" = mkOption {
type = types.nullOr (types.enum ["prefix" "postfix" "prefer_prefix" "prefer_postfix"]);
default = null;
description = ''
Whether to show inlay hints as postfix ops (`.*` instead of `*`, etc).
default value is:
```nix
"prefix"
```
'';
};
};
"lifetimeElisionHints" = { "lifetimeElisionHints" = {
"enable" = mkOption { "enable" = mkOption {
type = types.nullOr (types.enum ["always" "never" "skip_trivial"]); type = types.nullOr (types.enum ["always" "never" "skip_trivial"]);
@ -909,7 +1093,8 @@ with lib; {
type = types.nullOr (types.enum ["always" "never" "mutable"]); type = types.nullOr (types.enum ["always" "never" "mutable"]);
default = null; default = null;
description = '' description = ''
Whether to show inlay type hints for compiler inserted reborrows. Whether to show inlay hints for compiler inserted reborrows.
This setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#.
default value is: default value is:
```nix ```nix
@ -1076,6 +1261,18 @@ with lib; {
''; '';
}; };
}; };
"location" = mkOption {
type = types.nullOr (types.enum ["above_name" "above_whole_item"]);
default = null;
description = ''
Where to render annotations.
default value is:
```nix
"above_name"
```
'';
};
"references" = { "references" = {
"adt" = { "adt" = {
"enable" = mkOption { "enable" = mkOption {
@ -1198,6 +1395,18 @@ with lib; {
''; '';
}; };
}; };
"numThreads" = mkOption {
type = types.nullOr (types.nullOr (types.addCheck types.int (x: x >= 0)));
default = null;
description = ''
How many worker threads in the main loop. The default `null` means to pick automatically.
default value is:
```nix
null
```
'';
};
"procMacro" = { "procMacro" = {
"attributes" = { "attributes" = {
"enable" = mkOption { "enable" = mkOption {
@ -1253,6 +1462,20 @@ with lib; {
''; '';
}; };
}; };
"references" = {
"excludeImports" = mkOption {
type = types.nullOr (types.bool);
default = null;
description = ''
Exclude imports from find-all-references.
default value is:
```nix
false
```
'';
};
};
"runnables" = { "runnables" = {
"command" = mkOption { "command" = mkOption {
type = types.nullOr (types.nullOr (types.str)); type = types.nullOr (types.nullOr (types.str));