Started rust-analyzer.cargo.defaultTarget implementation

This commit is contained in:
Christophe MASSOLIN 2020-04-27 00:11:04 +02:00
parent 5671bacfa6
commit b7edffe244
3 changed files with 21 additions and 0 deletions

View file

@ -42,6 +42,11 @@ impl ops::Index<Target> for CargoWorkspace {
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RustcConfig {
pub default_target: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct CargoConfig {
/// Do not activate the `default` feature.
@ -56,6 +61,9 @@ pub struct CargoConfig {
/// Runs cargo check on launch to figure out the correct values of OUT_DIR
pub load_out_dirs_from_check: bool,
/// rustc config
pub rustc: RustcConfig,
}
impl Default for CargoConfig {
@ -65,6 +73,7 @@ impl Default for CargoConfig {
all_features: true,
features: Vec::new(),
load_out_dirs_from_check: false,
rustc: RustcConfig { default_target: None },
}
}
}
@ -160,6 +169,9 @@ impl CargoWorkspace {
if let Some(parent) = cargo_toml.parent() {
meta.current_dir(parent);
}
if let Some(target) = cargo_features.rustc.default_target.as_ref() {
meta.other_options(&[String::from("--filter-platform"), target.clone()]);
}
let meta = meta.exec().with_context(|| {
format!("Failed to run `cargo metadata --manifest-path {}`", cargo_toml.display())
})?;

View file

@ -134,6 +134,7 @@ impl Config {
set(value, "/cargo/allFeatures", &mut self.cargo.all_features);
set(value, "/cargo/features", &mut self.cargo.features);
set(value, "/cargo/loadOutDirsFromCheck", &mut self.cargo.load_out_dirs_from_check);
set(value, "/cargo/rustc/defaultTarget", &mut self.cargo.rustc.default_target);
match get(value, "/procMacro/enable") {
Some(true) => {

View file

@ -237,6 +237,14 @@
"default": false,
"markdownDescription": "Run `cargo check` on startup to get the correct value for package OUT_DIRs"
},
"rust-analyzer.cargo.rustc.defaultTarget": {
"type": [
"null",
"string"
],
"default": null,
"description": "Specify the default target"
},
"rust-analyzer.rustfmt.extraArgs": {
"type": "array",
"items": {