aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs10
1 files changed, 6 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 666f2ee29..9aa1e7eea 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -1,7 +1,11 @@
1//! This module is responsible for implementing handlers for Lanuage Server Protocol. 1//! This module is responsible for implementing handlers for Lanuage Server Protocol.
2//! The majority of requests are fulfilled by calling into the `ra_ide` crate. 2//! The majority of requests are fulfilled by calling into the `ra_ide` crate.
3 3
4use std::{fmt::Write as _, io::Write as _}; 4use std::{
5 fmt::Write as _,
6 io::Write as _,
7 process::{self, Stdio},
8};
5 9
6use either::Either; 10use either::Either;
7use lsp_server::ErrorCode; 11use lsp_server::ErrorCode;
@@ -582,21 +586,19 @@ pub fn handle_formatting(
582 let file_line_index = world.analysis().file_line_index(file_id)?; 586 let file_line_index = world.analysis().file_line_index(file_id)?;
583 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index); 587 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index);
584 588
585 use std::process;
586 let mut rustfmt = process::Command::new("rustfmt"); 589 let mut rustfmt = process::Command::new("rustfmt");
587 if let Some(&crate_id) = crate_ids.first() { 590 if let Some(&crate_id) = crate_ids.first() {
588 // Assume all crates are in the same edition 591 // Assume all crates are in the same edition
589 let edition = world.analysis().crate_edition(crate_id)?; 592 let edition = world.analysis().crate_edition(crate_id)?;
590 rustfmt.args(&["--edition", &edition.to_string()]); 593 rustfmt.args(&["--edition", &edition.to_string()]);
591 } 594 }
592 rustfmt.stdin(process::Stdio::piped()).stdout(process::Stdio::piped());
593 595
594 if let Ok(path) = params.text_document.uri.to_file_path() { 596 if let Ok(path) = params.text_document.uri.to_file_path() {
595 if let Some(parent) = path.parent() { 597 if let Some(parent) = path.parent() {
596 rustfmt.current_dir(parent); 598 rustfmt.current_dir(parent);
597 } 599 }
598 } 600 }
599 let mut rustfmt = rustfmt.spawn()?; 601 let mut rustfmt = rustfmt.stdin(Stdio::piped()).stdout(Stdio::piped()).spawn()?;
600 602
601 rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?; 603 rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?;
602 604