Unnamed repository; edit this file 'description' to name the repository.
Add and use rust-analyzer.cargo.extraArgs setting
Laurențiu Nicola 2023-03-12
parent cfc9d5c · commit c3864eb
-rw-r--r--crates/rust-analyzer/src/config.rs16
-rw-r--r--docs/user/generated_config.adoc5
-rw-r--r--editors/code/package.json8
3 files changed, 27 insertions, 2 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index f34ade4f32..75233dbb2a 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -101,6 +101,8 @@ config_data! {
/// Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to
/// avoid checking unnecessary things.
cargo_buildScripts_useRustcWrapper: bool = "true",
+ /// Extra arguments that are passed to every cargo invocation.
+ cargo_extraArgs: Vec<String> = "[]",
/// Extra environment variables that will be set when running cargo, rustc
/// or other commands within the workspace. Useful for setting RUSTFLAGS.
cargo_extraEnv: FxHashMap<String, String> = "{}",
@@ -1055,10 +1057,20 @@ impl Config {
}
}
+ pub fn extra_args(&self) -> &Vec<String> {
+ &self.data.cargo_extraArgs
+ }
+
pub fn extra_env(&self) -> &FxHashMap<String, String> {
&self.data.cargo_extraEnv
}
+ pub fn check_extra_args(&self) -> Vec<String> {
+ let mut extra_args = self.extra_args().clone();
+ extra_args.extend_from_slice(&self.data.check_extraArgs);
+ extra_args
+ }
+
pub fn check_extra_env(&self) -> FxHashMap<String, String> {
let mut extra_env = self.data.cargo_extraEnv.clone();
extra_env.extend(self.data.check_extraEnv.clone());
@@ -1157,7 +1169,7 @@ impl Config {
InvocationLocation::Workspace => project_model::InvocationLocation::Workspace,
},
run_build_script_command: self.data.cargo_buildScripts_overrideCommand.clone(),
- extra_args: self.data.check_extraArgs.clone(),
+ extra_args: self.data.cargo_extraArgs.clone(),
extra_env: self.data.cargo_extraEnv.clone(),
}
}
@@ -1228,7 +1240,7 @@ impl Config {
CargoFeaturesDef::All => vec![],
CargoFeaturesDef::Selected(it) => it,
},
- extra_args: self.data.check_extraArgs.clone(),
+ extra_args: self.check_extra_args(),
extra_env: self.check_extra_env(),
ansi_color_output: self.color_diagnostic_output(),
},
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index 1bc498c42c..6937a7ed9a 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -71,6 +71,11 @@ cargo check --quiet --workspace --message-format=json --all-targets
Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to
avoid checking unnecessary things.
--
+[[rust-analyzer.cargo.extraArgs]]rust-analyzer.cargo.extraArgs (default: `[]`)::
++
+--
+Extra arguments that are passed to every cargo invocation.
+--
[[rust-analyzer.cargo.extraEnv]]rust-analyzer.cargo.extraEnv (default: `{}`)::
+
--
diff --git a/editors/code/package.json b/editors/code/package.json
index 90f7b9074c..a3b1a3107d 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -511,6 +511,14 @@
"default": true,
"type": "boolean"
},
+ "rust-analyzer.cargo.extraArgs": {
+ "markdownDescription": "Extra arguments that are passed to every cargo invocation.",
+ "default": [],
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
"rust-analyzer.cargo.extraEnv": {
"markdownDescription": "Extra environment variables that will be set when running cargo, rustc\nor other commands within the workspace. Useful for setting RUSTFLAGS.",
"default": {},