From c067ca505a5ca48e3bf97fe15501ad61e9a12b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Thu, 21 Jan 2021 15:58:17 +0200 Subject: chdir to file before rustfmt --- crates/rust-analyzer/src/handlers.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 001f3a37d..42451cd2d 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -858,6 +858,23 @@ pub(crate) fn handle_formatting( RustfmtConfig::Rustfmt { extra_args } => { let mut cmd = process::Command::new(toolchain::rustfmt()); cmd.args(extra_args); + // try to chdir to the file so we can respect `rustfmt.toml` + // FIXME: use `rustfmt --config-path` once + // https://github.com/rust-lang/rustfmt/issues/4660 gets fixed + match params.text_document.uri.to_file_path() { + Ok(mut path) => { + // pop off file name + if path.pop() && path.is_dir() { + cmd.current_dir(path); + } + } + Err(_) => { + log::error!( + "Unable to get file path for {}, rustfmt.toml might be ignored", + params.text_document.uri + ); + } + } if let Some(&crate_id) = crate_ids.first() { // Assume all crates are in the same edition let edition = snap.analysis.crate_edition(crate_id)?; -- cgit v1.2.3