From 8a788c764f579361debd5ec7894fa164f5a84630 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 2 Apr 2020 14:30:28 +0200 Subject: Allow fully overriding check and fmt commands --- crates/rust-analyzer/src/config.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'crates') diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index f3d8773cc..04f5bb473 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -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::>(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::>(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); -- cgit v1.2.3