Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/config.rs180
-rw-r--r--crates/rust-analyzer/src/config/patch_old_style.rs17
-rw-r--r--docs/user/generated_config.adoc176
-rw-r--r--editors/code/package.json224
4 files changed, 302 insertions, 295 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 4ee92b3d4e..25bfa0c28e 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -124,65 +124,8 @@ config_data! {
/// Unsets `#[cfg(test)]` for the specified crates.
cargo_unsetTest: Vec<String> = "[\"core\"]",
- /// Check all targets and tests (`--all-targets`).
- checkOnSave_allTargets: bool = "true",
- /// Cargo command to use for `cargo check`.
- checkOnSave_command: String = "\"check\"",
- /// Run specified `cargo check` command for diagnostics on save.
- checkOnSave_enable: bool = "true",
- /// Extra arguments for `cargo check`.
- checkOnSave_extraArgs: Vec<String> = "[]",
- /// Extra environment variables that will be set when running `cargo check`.
- /// Extends `#rust-analyzer.cargo.extraEnv#`.
- checkOnSave_extraEnv: FxHashMap<String, String> = "{}",
- /// List of features to activate. Defaults to
- /// `#rust-analyzer.cargo.features#`.
- ///
- /// Set to `"all"` to pass `--all-features` to Cargo.
- checkOnSave_features: Option<CargoFeaturesDef> = "null",
- /// Specifies the working directory for running checks.
- /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories.
- // FIXME: Ideally we would support this in some way
- /// 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.
- checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"",
- /// 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.
- checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"",
- /// Whether to pass `--no-default-features` to Cargo. Defaults to
- /// `#rust-analyzer.cargo.noDefaultFeatures#`.
- checkOnSave_noDefaultFeatures: Option<bool> = "null",
- /// Override the command rust-analyzer uses instead of `cargo check` for
- /// diagnostics on save. The command is required to output json and
- /// should therefore include `--message-format=json` or a similar option.
- ///
- /// If you're changing this because you're using some tool wrapping
- /// Cargo, you might also want to change
- /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`.
- ///
- /// If there are multiple linked projects, this command is invoked for
- /// each of them, with the working directory being the project root
- /// (i.e., the folder containing the `Cargo.toml`).
- ///
- /// An example command would be:
- ///
- /// ```bash
- /// cargo check --workspace --message-format=json --all-targets
- /// ```
- /// .
- checkOnSave_overrideCommand: Option<Vec<String>> = "null",
- /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.
- ///
- /// 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"`.
- checkOnSave_target | checkOnSave_targets: Option<CheckOnSaveTargets> = "null",
+ /// Run the flycheck command for diagnostics on save.
+ checkOnSave | checkOnSave_enable: bool = "true",
/// Toggles the additional completions that automatically add imports when completed.
/// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.
@@ -268,6 +211,64 @@ config_data! {
/// Controls file watching implementation.
files_watcher: FilesWatcherDef = "\"client\"",
+ /// Check all targets and tests (`--all-targets`).
+ flycheck_allTargets | checkOnSave_allTargets: bool = "true",
+ /// Cargo command to use for `cargo check`.
+ flycheck_command | checkOnSave_command: String = "\"check\"",
+ /// Extra arguments for `cargo check`.
+ flycheck_extraArgs | checkOnSave_extraArgs: Vec<String> = "[]",
+ /// Extra environment variables that will be set when running `cargo check`.
+ /// Extends `#rust-analyzer.cargo.extraEnv#`.
+ flycheck_extraEnv | checkOnSave_extraEnv: FxHashMap<String, String> = "{}",
+ /// List of features to activate. Defaults to
+ /// `#rust-analyzer.cargo.features#`.
+ ///
+ /// Set to `"all"` to pass `--all-features` to Cargo.
+ flycheck_features | checkOnSave_features: Option<CargoFeaturesDef> = "null",
+ /// Specifies the working directory for running checks.
+ /// - "workspace": run checks for workspaces in the corresponding workspaces' root directories.
+ // FIXME: Ideally we would support this in some way
+ /// 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.
+ flycheck_invocationLocation | checkOnSave_invocationLocation: InvocationLocation = "\"workspace\"",
+ /// 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.
+ flycheck_invocationStrategy | checkOnSave_invocationStrategy: InvocationStrategy = "\"per_workspace\"",
+ /// Whether to pass `--no-default-features` to Cargo. Defaults to
+ /// `#rust-analyzer.cargo.noDefaultFeatures#`.
+ flycheck_noDefaultFeatures | checkOnSave_noDefaultFeatures: Option<bool> = "null",
+ /// Override the command rust-analyzer uses instead of `cargo check` for
+ /// diagnostics on save. The command is required to output json and
+ /// should therefore include `--message-format=json` or a similar option.
+ ///
+ /// If you're changing this because you're using some tool wrapping
+ /// Cargo, you might also want to change
+ /// `#rust-analyzer.cargo.buildScripts.overrideCommand#`.
+ ///
+ /// If there are multiple linked projects, this command is invoked for
+ /// each of them, with the working directory being the project root
+ /// (i.e., the folder containing the `Cargo.toml`).
+ ///
+ /// An example command would be:
+ ///
+ /// ```bash
+ /// cargo check --workspace --message-format=json --all-targets
+ /// ```
+ /// .
+ flycheck_overrideCommand | checkOnSave_overrideCommand: Option<Vec<String>> = "null",
+ /// Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.
+ ///
+ /// 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"`.
+ flycheck_targets | checkOnSave_targets | checkOnSave_target: Option<CheckOnSaveTargets> = "null",
+
/// Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords.
highlightRelated_breakPoints_enable: bool = "true",
/// Enables highlighting of all exit points while the cursor is on any `return`, `?`, `fn`, or return type arrow (`->`).
@@ -786,9 +787,9 @@ impl Config {
fn validate(&self, error_sink: &mut Vec<(String, serde_json::Error)>) {
use serde::de::Error;
- if self.data.checkOnSave_command.is_empty() {
+ if self.data.flycheck_command.is_empty() {
error_sink.push((
- "/checkOnSave/command".to_string(),
+ "/flycheck/command".to_string(),
serde_json::Error::custom("expected a non-empty string"),
));
}
@@ -1033,7 +1034,7 @@ impl Config {
pub fn check_on_save_extra_env(&self) -> FxHashMap<String, String> {
let mut extra_env = self.data.cargo_extraEnv.clone();
- extra_env.extend(self.data.checkOnSave_extraEnv.clone());
+ extra_env.extend(self.data.flycheck_extraEnv.clone());
extra_env
}
@@ -1145,7 +1146,7 @@ impl Config {
}
pub fn flycheck(&self) -> FlycheckConfig {
- match &self.data.checkOnSave_overrideCommand {
+ match &self.data.flycheck_overrideCommand {
Some(args) if !args.is_empty() => {
let mut args = args.clone();
let command = args.remove(0);
@@ -1153,13 +1154,13 @@ impl Config {
command,
args,
extra_env: self.check_on_save_extra_env(),
- invocation_strategy: match self.data.checkOnSave_invocationStrategy {
+ invocation_strategy: match self.data.flycheck_invocationStrategy {
InvocationStrategy::Once => flycheck::InvocationStrategy::Once,
InvocationStrategy::PerWorkspace => {
flycheck::InvocationStrategy::PerWorkspace
}
},
- invocation_location: match self.data.checkOnSave_invocationLocation {
+ invocation_location: match self.data.flycheck_invocationLocation {
InvocationLocation::Root => {
flycheck::InvocationLocation::Root(self.root_path.clone())
}
@@ -1168,42 +1169,42 @@ impl Config {
}
}
Some(_) | None => FlycheckConfig::CargoCommand {
- command: self.data.checkOnSave_command.clone(),
+ command: self.data.flycheck_command.clone(),
target_triples: self
.data
- .checkOnSave_target
+ .flycheck_targets
.clone()
.and_then(|targets| match &targets.0[..] {
[] => None,
targets => Some(targets.into()),
})
.unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()),
- all_targets: self.data.checkOnSave_allTargets,
+ all_targets: self.data.flycheck_allTargets,
no_default_features: self
.data
- .checkOnSave_noDefaultFeatures
+ .flycheck_noDefaultFeatures
.unwrap_or(self.data.cargo_noDefaultFeatures),
all_features: matches!(
- self.data.checkOnSave_features.as_ref().unwrap_or(&self.data.cargo_features),
+ self.data.flycheck_features.as_ref().unwrap_or(&self.data.cargo_features),
CargoFeaturesDef::All
),
features: match self
.data
- .checkOnSave_features
+ .flycheck_features
.clone()
.unwrap_or_else(|| self.data.cargo_features.clone())
{
CargoFeaturesDef::All => vec![],
CargoFeaturesDef::Selected(it) => it,
},
- extra_args: self.data.checkOnSave_extraArgs.clone(),
+ extra_args: self.data.flycheck_extraArgs.clone(),
extra_env: self.check_on_save_extra_env(),
},
}
}
pub fn check_on_save(&self) -> bool {
- self.data.checkOnSave_enable
+ self.data.checkOnSave
}
pub fn runnables(&self) -> RunnablesConfig {
@@ -1862,25 +1863,27 @@ fn get_field<T: DeserializeOwned>(
alias: Option<&'static str>,
default: &str,
) -> T {
- let default = serde_json::from_str(default).unwrap();
// XXX: check alias first, to work-around the VS Code where it pre-fills the
// defaults instead of sending an empty object.
alias
.into_iter()
.chain(iter::once(field))
- .find_map(move |field| {
+ .filter_map(move |field| {
let mut pointer = field.replace('_', "/");
pointer.insert(0, '/');
- json.pointer_mut(&pointer).and_then(|it| match serde_json::from_value(it.take()) {
- Ok(it) => Some(it),
- Err(e) => {
- tracing::warn!("Failed to deserialize config field at {}: {:?}", pointer, e);
- error_sink.push((pointer, e));
- None
- }
- })
+ json.pointer_mut(&pointer)
+ .map(|it| serde_json::from_value(it.take()).map_err(|e| (e, pointer)))
+ })
+ .find(Result::is_ok)
+ .and_then(|res| match res {
+ Ok(it) => Some(it),
+ Err((e, pointer)) => {
+ tracing::warn!("Failed to deserialize config field at {}: {:?}", pointer, e);
+ error_sink.push((pointer, e));
+ None
+ }
})
- .unwrap_or(default)
+ .unwrap_or_else(|| serde_json::from_str(default).unwrap())
}
fn schema(fields: &[(&'static str, &'static str, &[&str], &str)]) -> serde_json::Value {
@@ -1964,15 +1967,6 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"type": ["null", "array"],
"items": { "type": "string" },
},
- "MergeBehaviorDef" => set! {
- "type": "string",
- "enum": ["none", "crate", "module"],
- "enumDescriptions": [
- "Do not merge imports at all.",
- "Merge imports from the same crate into a single `use` statement.",
- "Merge imports from the same module into a single `use` statement."
- ],
- },
"ExprFillDefaultDef" => set! {
"type": "string",
"enum": ["todo", "default"],
diff --git a/crates/rust-analyzer/src/config/patch_old_style.rs b/crates/rust-analyzer/src/config/patch_old_style.rs
index 3b174a7193..38b70219cb 100644
--- a/crates/rust-analyzer/src/config/patch_old_style.rs
+++ b/crates/rust-analyzer/src/config/patch_old_style.rs
@@ -4,6 +4,9 @@ use serde_json::{json, Value};
/// This function patches the json config to the new expected keys.
/// That is we try to load old known config keys here and convert them to the new ones.
/// See https://github.com/rust-lang/rust-analyzer/pull/12010
+///
+/// We already have an alias system for simple cases, but if we make structural changes
+/// the alias infra fails down.
pub(super) fn patch_json_for_outdated_configs(json: &mut Value) {
let copy = json.clone();
@@ -105,9 +108,9 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) {
merge(json, json!({ "cargo": { "features": "all" } }));
}
- // checkOnSave_allFeatures, checkOnSave_features -> checkOnSave_features
+ // checkOnSave_allFeatures, checkOnSave_features -> flycheck_features
if let Some(Value::Bool(true)) = copy.pointer("/checkOnSave/allFeatures") {
- merge(json, json!({ "checkOnSave": { "features": "all" } }));
+ merge(json, json!({ "flycheck": { "features": "all" } }));
}
// completion_addCallArgumentSnippets completion_addCallParenthesis -> completion_callable_snippets
@@ -121,6 +124,16 @@ pub(super) fn patch_json_for_outdated_configs(json: &mut Value) {
(_, _) => return,
};
merge(json, json!({ "completion": { "callable": {"snippets": res }} }));
+
+ // We need to do this due to the checkOnSave_enable -> checkOnSave change, as that key now can either be an object or a bool
+ // checkOnSave_* -> flycheck_*
+ if let Some(Value::Object(obj)) = copy.pointer("/checkOnSave") {
+ // checkOnSave_enable -> checkOnSave
+ if let Some(b @ Value::Bool(_)) = obj.get("enable") {
+ merge(json, json!({ "checkOnSave": b }));
+ }
+ merge(json, json!({ "flycheck": obj }));
+ }
}
fn merge(dst: &mut Value, src: Value) {
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index 91f8e98449..e6da4f38ab 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -109,96 +109,10 @@ Compilation target override (target triple).
--
Unsets `#[cfg(test)]` for the specified crates.
--
-[[rust-analyzer.checkOnSave.allTargets]]rust-analyzer.checkOnSave.allTargets (default: `true`)::
+[[rust-analyzer.checkOnSave]]rust-analyzer.checkOnSave (default: `true`)::
+
--
-Check all targets and tests (`--all-targets`).
---
-[[rust-analyzer.checkOnSave.command]]rust-analyzer.checkOnSave.command (default: `"check"`)::
-+
---
-Cargo command to use for `cargo check`.
---
-[[rust-analyzer.checkOnSave.enable]]rust-analyzer.checkOnSave.enable (default: `true`)::
-+
---
-Run specified `cargo check` command for diagnostics on save.
---
-[[rust-analyzer.checkOnSave.extraArgs]]rust-analyzer.checkOnSave.extraArgs (default: `[]`)::
-+
---
-Extra arguments for `cargo check`.
---
-[[rust-analyzer.checkOnSave.extraEnv]]rust-analyzer.checkOnSave.extraEnv (default: `{}`)::
-+
---
-Extra environment variables that will be set when running `cargo check`.
-Extends `#rust-analyzer.cargo.extraEnv#`.
---
-[[rust-analyzer.checkOnSave.features]]rust-analyzer.checkOnSave.features (default: `null`)::
-+
---
-List of features to activate. Defaults to
-`#rust-analyzer.cargo.features#`.
-
-Set to `"all"` to pass `--all-features` to Cargo.
---
-[[rust-analyzer.checkOnSave.invocationLocation]]rust-analyzer.checkOnSave.invocationLocation (default: `"workspace"`)::
-+
---
-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.
---
-[[rust-analyzer.checkOnSave.invocationStrategy]]rust-analyzer.checkOnSave.invocationStrategy (default: `"per_workspace"`)::
-+
---
-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.
---
-[[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`)::
-+
---
-Whether to pass `--no-default-features` to Cargo. Defaults to
-`#rust-analyzer.cargo.noDefaultFeatures#`.
---
-[[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`)::
-+
---
-Override the command rust-analyzer uses instead of `cargo check` for
-diagnostics on save. The command is required to output json and
-should therefore include `--message-format=json` or a similar option.
-
-If you're changing this because you're using some tool wrapping
-Cargo, you might also want to change
-`#rust-analyzer.cargo.buildScripts.overrideCommand#`.
-
-If there are multiple linked projects, this command is invoked for
-each of them, with the working directory being the project root
-(i.e., the folder containing the `Cargo.toml`).
-
-An example command would be:
-
-```bash
-cargo check --workspace --message-format=json --all-targets
-```
-.
---
-[[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`)::
-+
---
-Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.
-
-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"`.
+Run the flycheck command for diagnostics on save.
--
[[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`)::
+
@@ -327,6 +241,92 @@ also need to add the folders to Code's `files.watcherExclude`.
--
Controls file watching implementation.
--
+[[rust-analyzer.flycheck.allTargets]]rust-analyzer.flycheck.allTargets (default: `true`)::
++
+--
+Check all targets and tests (`--all-targets`).
+--
+[[rust-analyzer.flycheck.command]]rust-analyzer.flycheck.command (default: `"check"`)::
++
+--
+Cargo command to use for `cargo check`.
+--
+[[rust-analyzer.flycheck.extraArgs]]rust-analyzer.flycheck.extraArgs (default: `[]`)::
++
+--
+Extra arguments for `cargo check`.
+--
+[[rust-analyzer.flycheck.extraEnv]]rust-analyzer.flycheck.extraEnv (default: `{}`)::
++
+--
+Extra environment variables that will be set when running `cargo check`.
+Extends `#rust-analyzer.cargo.extraEnv#`.
+--
+[[rust-analyzer.flycheck.features]]rust-analyzer.flycheck.features (default: `null`)::
++
+--
+List of features to activate. Defaults to
+`#rust-analyzer.cargo.features#`.
+
+Set to `"all"` to pass `--all-features` to Cargo.
+--
+[[rust-analyzer.flycheck.invocationLocation]]rust-analyzer.flycheck.invocationLocation (default: `"workspace"`)::
++
+--
+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.
+--
+[[rust-analyzer.flycheck.invocationStrategy]]rust-analyzer.flycheck.invocationStrategy (default: `"per_workspace"`)::
++
+--
+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.
+--
+[[rust-analyzer.flycheck.noDefaultFeatures]]rust-analyzer.flycheck.noDefaultFeatures (default: `null`)::
++
+--
+Whether to pass `--no-default-features` to Cargo. Defaults to
+`#rust-analyzer.cargo.noDefaultFeatures#`.
+--
+[[rust-analyzer.flycheck.overrideCommand]]rust-analyzer.flycheck.overrideCommand (default: `null`)::
++
+--
+Override the command rust-analyzer uses instead of `cargo check` for
+diagnostics on save. The command is required to output json and
+should therefore include `--message-format=json` or a similar option.
+
+If you're changing this because you're using some tool wrapping
+Cargo, you might also want to change
+`#rust-analyzer.cargo.buildScripts.overrideCommand#`.
+
+If there are multiple linked projects, this command is invoked for
+each of them, with the working directory being the project root
+(i.e., the folder containing the `Cargo.toml`).
+
+An example command would be:
+
+```bash
+cargo check --workspace --message-format=json --all-targets
+```
+.
+--
+[[rust-analyzer.flycheck.targets]]rust-analyzer.flycheck.targets (default: `null`)::
++
+--
+Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.
+
+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"`.
+--
[[rust-analyzer.highlightRelated.breakPoints.enable]]rust-analyzer.highlightRelated.breakPoints.enable (default: `true`)::
+
--
diff --git a/editors/code/package.json b/editors/code/package.json
index 454b95a63b..4fe829382d 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -556,121 +556,11 @@
"type": "string"
}
},
- "rust-analyzer.checkOnSave.allTargets": {
- "markdownDescription": "Check all targets and tests (`--all-targets`).",
+ "rust-analyzer.checkOnSave": {
+ "markdownDescription": "Run the flycheck command for diagnostics on save.",
"default": true,
"type": "boolean"
},
- "rust-analyzer.checkOnSave.command": {
- "markdownDescription": "Cargo command to use for `cargo check`.",
- "default": "check",
- "type": "string"
- },
- "rust-analyzer.checkOnSave.enable": {
- "markdownDescription": "Run specified `cargo check` command for diagnostics on save.",
- "default": true,
- "type": "boolean"
- },
- "rust-analyzer.checkOnSave.extraArgs": {
- "markdownDescription": "Extra arguments for `cargo check`.",
- "default": [],
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "rust-analyzer.checkOnSave.extraEnv": {
- "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.",
- "default": {},
- "type": "object"
- },
- "rust-analyzer.checkOnSave.features": {
- "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.",
- "default": null,
- "anyOf": [
- {
- "type": "string",
- "enum": [
- "all"
- ],
- "enumDescriptions": [
- "Pass `--all-features` to cargo"
- ]
- },
- {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- {
- "type": "null"
- }
- ]
- },
- "rust-analyzer.checkOnSave.invocationLocation": {
- "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.",
- "default": "workspace",
- "type": "string",
- "enum": [
- "workspace",
- "root"
- ],
- "enumDescriptions": [
- "The command will be executed in the corresponding workspace root.",
- "The command will be executed in the project root."
- ]
- },
- "rust-analyzer.checkOnSave.invocationStrategy": {
- "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.",
- "default": "per_workspace",
- "type": "string",
- "enum": [
- "per_workspace",
- "once"
- ],
- "enumDescriptions": [
- "The command will be executed for each workspace.",
- "The command will be executed once."
- ]
- },
- "rust-analyzer.checkOnSave.noDefaultFeatures": {
- "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.",
- "default": null,
- "type": [
- "null",
- "boolean"
- ]
- },
- "rust-analyzer.checkOnSave.overrideCommand": {
- "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.",
- "default": null,
- "type": [
- "null",
- "array"
- ],
- "items": {
- "type": "string"
- }
- },
- "rust-analyzer.checkOnSave.target": {
- "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.",
- "default": null,
- "anyOf": [
- {
- "type": "null"
- },
- {
- "type": "string"
- },
- {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- ]
- },
"rust-analyzer.completion.autoimport.enable": {
"markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.",
"default": true,
@@ -812,6 +702,116 @@
"Use server-side file watching"
]
},
+ "rust-analyzer.flycheck.allTargets": {
+ "markdownDescription": "Check all targets and tests (`--all-targets`).",
+ "default": true,
+ "type": "boolean"
+ },
+ "rust-analyzer.flycheck.command": {
+ "markdownDescription": "Cargo command to use for `cargo check`.",
+ "default": "check",
+ "type": "string"
+ },
+ "rust-analyzer.flycheck.extraArgs": {
+ "markdownDescription": "Extra arguments for `cargo check`.",
+ "default": [],
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "rust-analyzer.flycheck.extraEnv": {
+ "markdownDescription": "Extra environment variables that will be set when running `cargo check`.\nExtends `#rust-analyzer.cargo.extraEnv#`.",
+ "default": {},
+ "type": "object"
+ },
+ "rust-analyzer.flycheck.features": {
+ "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.\n\nSet to `\"all\"` to pass `--all-features` to Cargo.",
+ "default": null,
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "all"
+ ],
+ "enumDescriptions": [
+ "Pass `--all-features` to cargo"
+ ]
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "rust-analyzer.flycheck.invocationLocation": {
+ "markdownDescription": "Specifies the working directory for running checks.\n- \"workspace\": run checks for workspaces in the corresponding workspaces' root directories.\n This falls back to \"root\" if `#rust-analyzer.cargo.checkOnSave.invocationStrategy#` is set to `once`.\n- \"root\": run checks in the project's root directory.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.",
+ "default": "workspace",
+ "type": "string",
+ "enum": [
+ "workspace",
+ "root"
+ ],
+ "enumDescriptions": [
+ "The command will be executed in the corresponding workspace root.",
+ "The command will be executed in the project root."
+ ]
+ },
+ "rust-analyzer.flycheck.invocationStrategy": {
+ "markdownDescription": "Specifies the invocation strategy to use when running the checkOnSave command.\nIf `per_workspace` is set, the command will be executed for each workspace.\nIf `once` is set, the command will be executed once.\nThis config only has an effect when `#rust-analyzer.cargo.buildScripts.overrideCommand#`\nis set.",
+ "default": "per_workspace",
+ "type": "string",
+ "enum": [
+ "per_workspace",
+ "once"
+ ],
+ "enumDescriptions": [
+ "The command will be executed for each workspace.",
+ "The command will be executed once."
+ ]
+ },
+ "rust-analyzer.flycheck.noDefaultFeatures": {
+ "markdownDescription": "Whether to pass `--no-default-features` to Cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.",
+ "default": null,
+ "type": [
+ "null",
+ "boolean"
+ ]
+ },
+ "rust-analyzer.flycheck.overrideCommand": {
+ "markdownDescription": "Override the command rust-analyzer uses instead of `cargo check` for\ndiagnostics on save. The command is required to output json and\nshould therefore include `--message-format=json` or a similar option.\n\nIf you're changing this because you're using some tool wrapping\nCargo, you might also want to change\n`#rust-analyzer.cargo.buildScripts.overrideCommand#`.\n\nIf there are multiple linked projects, this command is invoked for\neach of them, with the working directory being the project root\n(i.e., the folder containing the `Cargo.toml`).\n\nAn example command would be:\n\n```bash\ncargo check --workspace --message-format=json --all-targets\n```\n.",
+ "default": null,
+ "type": [
+ "null",
+ "array"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "rust-analyzer.flycheck.targets": {
+ "markdownDescription": "Check for specific targets. Defaults to `#rust-analyzer.cargo.target#` if empty.\n\nCan be a single target, e.g. `\"x86_64-unknown-linux-gnu\"` or a list of targets, e.g.\n`[\"aarch64-apple-darwin\", \"x86_64-apple-darwin\"]`.\n\nAliased as `\"checkOnSave.targets\"`.",
+ "default": null,
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ ]
+ },
"rust-analyzer.highlightRelated.breakPoints.enable": {
"markdownDescription": "Enables highlighting of related references while the cursor is on `break`, `loop`, `while`, or `for` keywords.",
"default": true,