diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index a06460de..793993ee 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -459,8 +459,8 @@ impl Application {
 
         doc.set_last_saved_revision(doc_save_event.revision);
 
-        let lines = doc.text().len_lines();
-        let bytes = doc.text().len_bytes();
+        let lines = doc_save_event.text.len_lines();
+        let bytes = doc_save_event.text.len_bytes();
 
         if let Err(err) = doc.set_path(Some(&doc_save_event.path)) {
             log::error!(
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 91d5f8aa..61bea527 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -93,6 +93,7 @@ pub struct DocumentSavedEvent {
     pub revision: usize,
     pub doc_id: DocumentId,
     pub path: PathBuf,
+    pub text: Rope,
 }
 
 pub type DocumentSavedEventResult = Result<DocumentSavedEvent, anyhow::Error>;
@@ -620,6 +621,7 @@ impl Document {
                 revision: current_rev,
                 doc_id,
                 path,
+                text: text.clone(),
             };
 
             if let Some(language_server) = language_server {