diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-01-08 16:28:18 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-01-09 10:35:54 +0100 |
| commit | a8c94eaf131cdadad07296fd1d69edeb51aa0970 (patch) | |
| tree | 3225011a689a83643f56f3e842a2bd670ab61c42 | |
| parent | f5f7ddae23f9a959e684fefd3f1b78c93f89968e (diff) | |
| download | rust-a8c94eaf131cdadad07296fd1d69edeb51aa0970.tar.gz rust-a8c94eaf131cdadad07296fd1d69edeb51aa0970.zip | |
fix: Fix rust-analyzer-proc-macro-srv failing to spawn on windows
| -rw-r--r-- | crates/proc-macro-api/src/process.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/crates/proc-macro-api/src/process.rs b/crates/proc-macro-api/src/process.rs index 3494164c067..0f64f9195d8 100644 --- a/crates/proc-macro-api/src/process.rs +++ b/crates/proc-macro-api/src/process.rs @@ -131,12 +131,19 @@ impl Process { } fn mk_child(path: &AbsPath, null_stderr: bool) -> io::Result<Child> { - Command::new(path.as_os_str()) - .env("RUST_ANALYZER_INTERNALS_DO_NOT_USE", "this is unstable") + let mut cmd = Command::new(path.as_os_str()); + cmd.env("RUST_ANALYZER_INTERNALS_DO_NOT_USE", "this is unstable") .stdin(Stdio::piped()) .stdout(Stdio::piped()) - .stderr(if null_stderr { Stdio::null() } else { Stdio::inherit() }) - .spawn() + .stderr(if null_stderr { Stdio::null() } else { Stdio::inherit() }); + if cfg!(windows) { + let mut path_var = std::ffi::OsString::new(); + path_var.push(path.parent().unwrap().parent().unwrap().as_os_str()); + path_var.push("\\bin;"); + path_var.push(std::env::var_os("PATH").unwrap_or_default()); + cmd.env("PATH", path_var); + } + cmd.spawn() } fn send_request( |
