Sync newly added diff hunks (#21759)

Kirill Bulatov created

Fixed project diff multi buffer not expanding its diff until edited

Release Notes:

- N/A

Change summary

crates/editor/src/git/project_diff.rs | 10 +++++-----
crates/editor/src/hunk_diff.rs        |  2 +-
2 files changed, 6 insertions(+), 6 deletions(-)

Detailed changes

crates/editor/src/git/project_diff.rs 🔗

@@ -243,7 +243,7 @@ impl ProjectDiffEditor {
                                         .map_err(|_| anyhow!("Unexpected non-buffer"))
                                 })
                                 .with_context(|| {
-                                    format!("loading {} for git diff", entry_path.path.display())
+                                    format!("loading {:?} for git diff", entry_path.path)
                                 })
                                 .log_err()
                             else {
@@ -313,11 +313,11 @@ impl ProjectDiffEditor {
                 project_diff_editor
                     .update(&mut cx, |project_diff_editor, cx| {
                         project_diff_editor.update_excerpts(id, new_changes, new_entry_order, cx);
-                        for change_set in change_sets {
-                            project_diff_editor.editor.update(cx, |editor, cx| {
+                        project_diff_editor.editor.update(cx, |editor, cx| {
+                            for change_set in change_sets {
                                 editor.diff_map.add_change_set(change_set, cx)
-                            });
-                        }
+                            }
+                        });
                     })
                     .ok();
             }),

crates/editor/src/hunk_diff.rs 🔗

@@ -89,7 +89,6 @@ impl DiffMap {
         self.snapshot
             .0
             .insert(buffer_id, change_set.read(cx).diff_to_buffer.clone());
-        Editor::sync_expanded_diff_hunks(self, buffer_id, cx);
         self.diff_bases.insert(
             buffer_id,
             DiffBaseState {
@@ -105,6 +104,7 @@ impl DiffMap {
                 change_set,
             },
         );
+        Editor::sync_expanded_diff_hunks(self, buffer_id, cx);
     }
 
     pub fn hunks(&self, include_folded: bool) -> impl Iterator<Item = &ExpandedHunk> {