Skip to content

Commit b7edffe

Browse files
committed
Started rust-analyzer.cargo.defaultTarget implementation
1 parent 5671bac commit b7edffe

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

crates/ra_project_model/src/cargo_workspace.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ impl ops::Index<Target> for CargoWorkspace {
4242
}
4343
}
4444

45+
#[derive(Clone, Debug, PartialEq, Eq)]
46+
pub struct RustcConfig {
47+
pub default_target: Option<String>,
48+
}
49+
4550
#[derive(Clone, Debug, PartialEq, Eq)]
4651
pub struct CargoConfig {
4752
/// Do not activate the `default` feature.
@@ -56,6 +61,9 @@ pub struct CargoConfig {
5661

5762
/// Runs cargo check on launch to figure out the correct values of OUT_DIR
5863
pub load_out_dirs_from_check: bool,
64+
65+
/// rustc config
66+
pub rustc: RustcConfig,
5967
}
6068

6169
impl Default for CargoConfig {
@@ -65,6 +73,7 @@ impl Default for CargoConfig {
6573
all_features: true,
6674
features: Vec::new(),
6775
load_out_dirs_from_check: false,
76+
rustc: RustcConfig { default_target: None },
6877
}
6978
}
7079
}
@@ -160,6 +169,9 @@ impl CargoWorkspace {
160169
if let Some(parent) = cargo_toml.parent() {
161170
meta.current_dir(parent);
162171
}
172+
if let Some(target) = cargo_features.rustc.default_target.as_ref() {
173+
meta.other_options(&[String::from("--filter-platform"), target.clone()]);
174+
}
163175
let meta = meta.exec().with_context(|| {
164176
format!("Failed to run `cargo metadata --manifest-path {}`", cargo_toml.display())
165177
})?;

crates/rust-analyzer/src/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ impl Config {
134134
set(value, "/cargo/allFeatures", &mut self.cargo.all_features);
135135
set(value, "/cargo/features", &mut self.cargo.features);
136136
set(value, "/cargo/loadOutDirsFromCheck", &mut self.cargo.load_out_dirs_from_check);
137+
set(value, "/cargo/rustc/defaultTarget", &mut self.cargo.rustc.default_target);
137138

138139
match get(value, "/procMacro/enable") {
139140
Some(true) => {

editors/code/package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,14 @@
237237
"default": false,
238238
"markdownDescription": "Run `cargo check` on startup to get the correct value for package OUT_DIRs"
239239
},
240+
"rust-analyzer.cargo.rustc.defaultTarget": {
241+
"type": [
242+
"null",
243+
"string"
244+
],
245+
"default": null,
246+
"description": "Specify the default target"
247+
},
240248
"rust-analyzer.rustfmt.extraArgs": {
241249
"type": "array",
242250
"items": {

0 commit comments

Comments
 (0)