Fix multibuffer to not mark everything as edited when buffer diffs don't change (#48424)

Conrad Irwin and Cole Miller created

Co-authored-by: Cole Miller <cole@zed.dev>

Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>

Change summary

crates/multi_buffer/src/multi_buffer.rs | 7 +++++++
1 file changed, 7 insertions(+)

Detailed changes

crates/multi_buffer/src/multi_buffer.rs 🔗

@@ -2609,6 +2609,13 @@ impl MultiBuffer {
 
     pub fn add_diff(&mut self, diff: Entity<BufferDiff>, cx: &mut Context<Self>) {
         let buffer_id = diff.read(cx).buffer_id;
+
+        if let Some(existing_diff) = self.diff_for(buffer_id)
+            && diff.entity_id() == existing_diff.entity_id()
+        {
+            return;
+        }
+
         self.buffer_diff_changed(
             diff.clone(),
             text::Anchor::min_max_range_for_buffer(buffer_id),