Skip to content

Commit

Permalink
fix: Join rustfmt overrideCommand with project root
Browse files Browse the repository at this point in the history
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
  • Loading branch information
mrkajetanp committed Oct 2, 2024
1 parent b91eeae commit 96d667b
Showing 1 changed file with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
Expand Down

0 comments on commit 96d667b

Please sign in to comment.