aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/main_loop
diff options
context:
space:
mode:
authorDJMcNab <[email protected]>2019-01-26 20:16:15 +0000
committerDJMcNab <[email protected]>2019-01-26 20:16:15 +0000
commit632b0f290232913ef9950ee46917d5c195193102 (patch)
treebe26fe86b87105ca64505e37e0b42824a0414dce /crates/ra_lsp_server/src/main_loop
parentd0ef1bde893bb46f0c7f9cab34706713169adb49 (diff)
Use the correct working directory for cargo metadata and rustfmt
Diffstat (limited to 'crates/ra_lsp_server/src/main_loop')
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs
index 8ea9edc84..3f58e3c93 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -520,10 +520,17 @@ pub fn handle_formatting(
520 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index); 520 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index);
521 521
522 use std::process; 522 use std::process;
523 let mut rustfmt = process::Command::new("rustfmt") 523 let mut rustfmt = process::Command::new("rustfmt");
524 rustfmt
524 .stdin(process::Stdio::piped()) 525 .stdin(process::Stdio::piped())
525 .stdout(process::Stdio::piped()) 526 .stdout(process::Stdio::piped());
526 .spawn()?; 527
528 if let Ok(path) = params.text_document.uri.to_file_path() {
529 if let Some(parent) = path.parent() {
530 rustfmt.current_dir(parent);
531 }
532 }
533 let mut rustfmt = rustfmt.spawn()?;
527 534
528 rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?; 535 rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?;
529 536
@@ -531,7 +538,9 @@ pub fn handle_formatting(
531 let captured_stdout = String::from_utf8(output.stdout)?; 538 let captured_stdout = String::from_utf8(output.stdout)?;
532 if !output.status.success() { 539 if !output.status.success() {
533 failure::bail!( 540 failure::bail!(
534 "rustfmt exited with error code {}: {}.", 541 r#"rustfmt exited with:
542 Status: {}
543 stdout: {}"#,
535 output.status, 544 output.status,
536 captured_stdout, 545 captured_stdout,
537 ); 546 );