3825: Allow fully overriding check and fmt commands r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2020-04-02 12:40:05 +00:00 committed by GitHub
commit 47a48505a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 2 deletions

View File

@ -133,13 +133,30 @@ 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);
if let RustfmtConfig::Rustfmt { extra_args } = &mut self.rustfmt {
if let Some(mut args) = get::<Vec<String>>(value, "/rustfmt/overrideCommand") {
if !args.is_empty() {
let command = args.remove(0);
self.rustfmt = RustfmtConfig::CustomCommand {
command,
args,
}
}
} else if let RustfmtConfig::Rustfmt { extra_args } = &mut self.rustfmt {
set(value, "/rustfmt/extraArgs", extra_args);
}
if let Some(false) = get(value, "/checkOnSave/enable") {
self.check = None
} else {
if let Some(FlycheckConfig::CargoCommand { command, extra_args, all_targets }) = &mut self.check
if let Some(mut args) = get::<Vec<String>>(value, "/checkOnSave/overrideCommand") {
if !args.is_empty() {
let command = args.remove(0);
self.check = Some(FlycheckConfig::CustomCommand {
command,
args,
})
}
} else if let Some(FlycheckConfig::CargoCommand { command, extra_args, all_targets }) = &mut self.check
{
set(value, "/checkOnSave/extraArgs", extra_args);
set(value, "/checkOnSave/command", command);

View File

@ -248,6 +248,13 @@
"default": [],
"description": "Additional arguments to rustfmt"
},
"rust-analyzer.rustfmt.overrideCommand": {
"type": "array",
"items": {
"type": "string"
},
"markdownDescription": "Advanced option, fully override the command rust-analyzer uses for formatting."
},
"rust-analyzer.checkOnSave.enable": {
"type": "boolean",
"default": true,
@ -266,6 +273,13 @@
"default": "check",
"markdownDescription": "Cargo command to use for `cargo check`"
},
"rust-analyzer.checkOnSave.overrideCommand": {
"type": "array",
"items": {
"type": "string"
},
"markdownDescription": "Advanced option, fully override the command rust-analyzer uses for checking. The command should include `--message=format=json` or similar option."
},
"rust-analyzer.checkOnSave.allTargets": {
"type": "boolean",
"default": true,