Auto merge of #16924 - poliorcetics:ab/push-kxwqvtypvlsq, r=Veykril

feat: Add `rust-analyzer.cargo.allTargets` to configure passing `--all-targets` to cargo invocations

Closes #16859

## Unresolved question:

Should this be a setting for build scripts only ? All the other `--all-targets` I found where already covered by `checkOnSave.allTargets`
This commit is contained in:
bors 2024-04-01 10:30:15 +00:00
commit 2678660880
5 changed files with 31 additions and 9 deletions

View file

@ -86,7 +86,9 @@ impl WorkspaceBuildScripts {
// --all-targets includes tests, benches and examples in addition to the // --all-targets includes tests, benches and examples in addition to the
// default lib and bins. This is an independent concept from the --target // default lib and bins. This is an independent concept from the --target
// flag below. // flag below.
if config.all_targets {
cmd.arg("--all-targets"); cmd.arg("--all-targets");
}
if let Some(target) = &config.target { if let Some(target) = &config.target {
cmd.args(["--target", target]); cmd.args(["--target", target]);

View file

@ -76,6 +76,8 @@ impl Default for CargoFeatures {
#[derive(Default, Clone, Debug, PartialEq, Eq)] #[derive(Default, Clone, Debug, PartialEq, Eq)]
pub struct CargoConfig { pub struct CargoConfig {
/// Whether to pass `--all-targets` to cargo invocations.
pub all_targets: bool,
/// List of features to activate. /// List of features to activate.
pub features: CargoFeatures, pub features: CargoFeatures,
/// rustc target /// rustc target

View file

@ -71,6 +71,9 @@ config_data! {
/// How many worker threads to handle priming caches. The default `0` means to pick automatically. /// How many worker threads to handle priming caches. The default `0` means to pick automatically.
cachePriming_numThreads: ParallelCachePrimingNumThreads = "0", cachePriming_numThreads: ParallelCachePrimingNumThreads = "0",
/// Pass `--all-targets` to cargo invocation. Overridden by `#rust-analyzer.check.allTargets#`
/// when the latter is set.
cargo_allTargets: bool = "true",
/// Automatically refresh project info via `cargo metadata` on /// Automatically refresh project info via `cargo metadata` on
/// `Cargo.toml` or `.cargo/config.toml` changes. /// `Cargo.toml` or `.cargo/config.toml` changes.
cargo_autoreload: bool = "true", cargo_autoreload: bool = "true",
@ -163,8 +166,8 @@ config_data! {
/// Run the check command for diagnostics on save. /// Run the check command for diagnostics on save.
checkOnSave | checkOnSave_enable: bool = "true", checkOnSave | checkOnSave_enable: bool = "true",
/// Check all targets and tests (`--all-targets`). /// Check all targets and tests (`--all-targets`). Overrides `#rust-analyzer.cargo.allTargets#`.
check_allTargets | checkOnSave_allTargets: bool = "true", check_allTargets | checkOnSave_allTargets: Option<bool> = "null",
/// Cargo command to use for `cargo check`. /// Cargo command to use for `cargo check`.
check_command | checkOnSave_command: String = "\"check\"", check_command | checkOnSave_command: String = "\"check\"",
/// Extra arguments for `cargo check`. /// Extra arguments for `cargo check`.
@ -1284,6 +1287,7 @@ impl Config {
let sysroot_query_metadata = self.data.cargo_sysrootQueryMetadata; let sysroot_query_metadata = self.data.cargo_sysrootQueryMetadata;
CargoConfig { CargoConfig {
all_targets: self.data.cargo_allTargets,
features: match &self.data.cargo_features { features: match &self.data.cargo_features {
CargoFeaturesDef::All => CargoFeatures::All, CargoFeaturesDef::All => CargoFeatures::All,
CargoFeaturesDef::Selected(features) => CargoFeatures::Selected { CargoFeaturesDef::Selected(features) => CargoFeatures::Selected {
@ -1394,7 +1398,7 @@ impl Config {
targets => Some(targets.into()), targets => Some(targets.into()),
}) })
.unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()), .unwrap_or_else(|| self.data.cargo_target.clone().into_iter().collect()),
all_targets: self.data.check_allTargets, all_targets: self.data.check_allTargets.unwrap_or(self.data.cargo_allTargets),
no_default_features: self no_default_features: self
.data .data
.check_noDefaultFeatures .check_noDefaultFeatures

View file

@ -19,6 +19,12 @@ Warm up caches on project load.
-- --
How many worker threads to handle priming caches. The default `0` means to pick automatically. How many worker threads to handle priming caches. The default `0` means to pick automatically.
-- --
[[rust-analyzer.cargo.allTargets]]rust-analyzer.cargo.allTargets (default: `true`)::
+
--
Pass `--all-targets` to cargo invocation. Overridden by `#rust-analyzer.check.allTargets#`
when the latter is set.
--
[[rust-analyzer.cargo.autoreload]]rust-analyzer.cargo.autoreload (default: `true`):: [[rust-analyzer.cargo.autoreload]]rust-analyzer.cargo.autoreload (default: `true`)::
+ +
-- --
@ -164,10 +170,10 @@ Unsets the implicit `#[cfg(test)]` for the specified crates.
-- --
Run the check command for diagnostics on save. Run the check command for diagnostics on save.
-- --
[[rust-analyzer.check.allTargets]]rust-analyzer.check.allTargets (default: `true`):: [[rust-analyzer.check.allTargets]]rust-analyzer.check.allTargets (default: `null`)::
+ +
-- --
Check all targets and tests (`--all-targets`). Check all targets and tests (`--all-targets`). Overrides `#rust-analyzer.cargo.allTargets#`.
-- --
[[rust-analyzer.check.command]]rust-analyzer.check.command (default: `"check"`):: [[rust-analyzer.check.command]]rust-analyzer.check.command (default: `"check"`)::
+ +

View file

@ -546,6 +546,11 @@
"minimum": 0, "minimum": 0,
"maximum": 255 "maximum": 255
}, },
"rust-analyzer.cargo.allTargets": {
"markdownDescription": "Pass `--all-targets` to cargo invocation. Overridden by `#rust-analyzer.check.allTargets#`\nwhen the latter is set.",
"default": true,
"type": "boolean"
},
"rust-analyzer.cargo.autoreload": { "rust-analyzer.cargo.autoreload": {
"markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` or `.cargo/config.toml` changes.", "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` or `.cargo/config.toml` changes.",
"default": true, "default": true,
@ -707,9 +712,12 @@
"type": "boolean" "type": "boolean"
}, },
"rust-analyzer.check.allTargets": { "rust-analyzer.check.allTargets": {
"markdownDescription": "Check all targets and tests (`--all-targets`).", "markdownDescription": "Check all targets and tests (`--all-targets`). Overrides `#rust-analyzer.cargo.allTargets#`.",
"default": true, "default": null,
"type": "boolean" "type": [
"null",
"boolean"
]
}, },
"rust-analyzer.check.command": { "rust-analyzer.check.command": {
"markdownDescription": "Cargo command to use for `cargo check`.", "markdownDescription": "Cargo command to use for `cargo check`.",