aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/main_loop
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server/src/main_loop')
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs
index ca47ff5e1..409583634 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -555,12 +555,18 @@ pub fn handle_formatting(
555 let _p = profile("handle_formatting"); 555 let _p = profile("handle_formatting");
556 let file_id = params.text_document.try_conv_with(&world)?; 556 let file_id = params.text_document.try_conv_with(&world)?;
557 let file = world.analysis().file_text(file_id)?; 557 let file = world.analysis().file_text(file_id)?;
558 let crate_ids = world.analysis().crate_for(file_id)?;
558 559
559 let file_line_index = world.analysis().file_line_index(file_id)?; 560 let file_line_index = world.analysis().file_line_index(file_id)?;
560 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index); 561 let end_position = TextUnit::of_str(&file).conv_with(&file_line_index);
561 562
562 use std::process; 563 use std::process;
563 let mut rustfmt = process::Command::new("rustfmt"); 564 let mut rustfmt = process::Command::new("rustfmt");
565 if let Some(&crate_id) = crate_ids.first() {
566 // Assume all crates are in the same edition
567 let edition = world.analysis().crate_edition(crate_id)?;
568 rustfmt.args(&["--edition", &edition.to_string()]);
569 }
564 rustfmt.stdin(process::Stdio::piped()).stdout(process::Stdio::piped()); 570 rustfmt.stdin(process::Stdio::piped()).stdout(process::Stdio::piped());
565 571
566 if let Ok(path) = params.text_document.uri.to_file_path() { 572 if let Ok(path) = params.text_document.uri.to_file_path() {