diff options
| author | Kajetan Puchalski <kajetan.puchalski@kajetanp.co.uk> | 2024-10-02 16:47:05 +0100 |
|---|---|---|
| committer | Kajetan Puchalski <kajetan.puchalski@kajetanp.co.uk> | 2024-10-02 17:01:10 +0100 |
| commit | 96d667ba295848ffa55756e15d0b7ad6b7d829fe (patch) | |
| tree | 7272456c49818d1f54d6936a3322de6e58c8db12 /src/tools | |
| parent | b91eeae55954c4ce48e825a317fc2fe6f3de00b5 (diff) | |
| download | rust-96d667ba295848ffa55756e15d0b7ad6b7d829fe.tar.gz rust-96d667ba295848ffa55756e15d0b7ad6b7d829fe.zip | |
fix: Join rustfmt overrideCommand with project root
When providing a custom rustfmt command, join it with the project root instead of the workspace root. This fixes rust-analyzer getting the wrong invocation path in projects containing subprojects. This makes the behaviour consistent with how a custom path provided in rust-analyzer.procMacro.server behaves already. Resolves issue #18222
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs index 9773d8dbce0..3a1770d770d 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs @@ -2201,14 +2201,14 @@ fn run_rustfmt( let cmd = Utf8PathBuf::from(&command); let target_spec = TargetSpec::for_file(snap, file_id)?; let mut cmd = match target_spec { - Some(TargetSpec::Cargo(spec)) => { - // approach: if the command name contains a path separator, join it with the workspace root. + Some(TargetSpec::Cargo(_)) => { + // approach: if the command name contains a path separator, join it with the project root. // however, if the path is absolute, joining will result in the absolute path being preserved. // as a fallback, rely on $PATH-based discovery. let cmd_path = if command.contains(std::path::MAIN_SEPARATOR) || (cfg!(windows) && command.contains('/')) { - spec.workspace_root.join(cmd).into() + snap.config.root_path().join(cmd).into() } else { cmd }; |
