}
}
- Ok(Some(vec![lsp_types::TextEdit {
- range: Range::new(Position::new(0, 0), end_position),
- new_text: captured_stdout,
- }]))
+ if *file == captured_stdout {
+ // The document is already formatted correctly -- no edits needed.
+ Ok(None)
+ } else {
+ Ok(Some(vec![lsp_types::TextEdit {
+ range: Range::new(Position::new(0, 0), end_position),
+ new_text: captured_stdout,
+ }]))
+ }
}
fn handle_fixes(
);
}
+#[test]
+fn test_format_document_unchanged() {
+ if skip_slow_tests() {
+ return;
+ }
+
+ let server = project(
+ r#"
+//- /Cargo.toml
+[package]
+name = "foo"
+version = "0.0.0"
+
+//- /src/lib.rs
+fn main() {}
+"#,
+ )
+ .wait_until_workspace_is_loaded();
+
+ server.request::<Formatting>(
+ DocumentFormattingParams {
+ text_document: server.doc_id("src/lib.rs"),
+ options: FormattingOptions {
+ tab_size: 4,
+ insert_spaces: false,
+ insert_final_newline: None,
+ trim_final_newlines: None,
+ trim_trailing_whitespace: None,
+ properties: HashMap::new(),
+ },
+ work_done_progress_params: WorkDoneProgressParams::default(),
+ },
+ json!(null),
+ );
+}
+
#[test]
fn test_missing_module_code_action() {
if skip_slow_tests() {