mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-12 13:18:47 +00:00
flycheck now uses the configured features
This commit is contained in:
parent
ba821afa24
commit
684b6fa1b8
2 changed files with 24 additions and 4 deletions
|
@ -18,8 +18,17 @@ pub use cargo_metadata::diagnostic::{
|
|||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum FlycheckConfig {
|
||||
CargoCommand { command: String, all_targets: bool, all_features: bool, extra_args: Vec<String> },
|
||||
CustomCommand { command: String, args: Vec<String> },
|
||||
CargoCommand {
|
||||
command: String,
|
||||
all_targets: bool,
|
||||
all_features: bool,
|
||||
features: Vec<String>,
|
||||
extra_args: Vec<String>,
|
||||
},
|
||||
CustomCommand {
|
||||
command: String,
|
||||
args: Vec<String>,
|
||||
},
|
||||
}
|
||||
|
||||
/// Flycheck wraps the shared state and communication machinery used for
|
||||
|
@ -188,7 +197,13 @@ impl FlycheckThread {
|
|||
self.check_process = None;
|
||||
|
||||
let mut cmd = match &self.config {
|
||||
FlycheckConfig::CargoCommand { command, all_targets, all_features, extra_args } => {
|
||||
FlycheckConfig::CargoCommand {
|
||||
command,
|
||||
all_targets,
|
||||
all_features,
|
||||
extra_args,
|
||||
features,
|
||||
} => {
|
||||
let mut cmd = Command::new(ra_toolchain::cargo());
|
||||
cmd.arg(command);
|
||||
cmd.args(&["--workspace", "--message-format=json", "--manifest-path"])
|
||||
|
@ -198,6 +213,9 @@ impl FlycheckThread {
|
|||
}
|
||||
if *all_features {
|
||||
cmd.arg("--all-features");
|
||||
} else if !features.is_empty() {
|
||||
cmd.arg("--features");
|
||||
cmd.arg(features.join(" "));
|
||||
}
|
||||
cmd.args(extra_args);
|
||||
cmd
|
||||
|
|
|
@ -147,6 +147,7 @@ impl Default for Config {
|
|||
all_targets: true,
|
||||
all_features: false,
|
||||
extra_args: Vec::new(),
|
||||
features: Vec::new(),
|
||||
}),
|
||||
|
||||
inlay_hints: InlayHintsConfig {
|
||||
|
@ -234,13 +235,14 @@ impl Config {
|
|||
}
|
||||
// otherwise configure command customizations
|
||||
_ => {
|
||||
if let Some(FlycheckConfig::CargoCommand { command, extra_args, all_targets, all_features })
|
||||
if let Some(FlycheckConfig::CargoCommand { command, extra_args, all_targets, all_features, features })
|
||||
= &mut self.check
|
||||
{
|
||||
set(value, "/checkOnSave/extraArgs", extra_args);
|
||||
set(value, "/checkOnSave/command", command);
|
||||
set(value, "/checkOnSave/allTargets", all_targets);
|
||||
set(value, "/checkOnSave/allFeatures", all_features);
|
||||
*features = self.cargo.features.clone();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue