diff --git a/crates/git_ui/src/text_diff_view.rs b/crates/git_ui/src/text_diff_view.rs index e76c1a3fbc656cff07b62681a1a2e09d291a13f8..59b974248400f0cbe1b8abfecb699b0849d797f9 100644 --- a/crates/git_ui/src/text_diff_view.rs +++ b/crates/git_ui/src/text_diff_view.rs @@ -258,6 +258,7 @@ async fn update_diff_buffer( ) -> Result<()> { let source_buffer_snapshot = source_buffer.read_with(cx, |buffer, _| buffer.snapshot()); let language = source_buffer_snapshot.language().cloned(); + let language_registry = source_buffer.read_with(cx, |buffer, _| buffer.language_registry()); let base_buffer_snapshot = clipboard_buffer.read_with(cx, |buffer, _| buffer.snapshot()); let base_text = base_buffer_snapshot.text(); @@ -268,13 +269,14 @@ async fn update_diff_buffer( source_buffer_snapshot.text.clone(), Some(Arc::from(base_text.as_str())), true, - language, + language.clone(), cx, ) }) .await; diff.update(cx, |diff, cx| { + diff.language_changed(language, language_registry, cx); diff.set_snapshot(update, &source_buffer_snapshot.text, cx) }) .await; diff --git a/crates/project/src/git_store.rs b/crates/project/src/git_store.rs index 451b1d2457325df29d504aad99dd732d9df864fe..29d6b25ebf40b9b7322eaa7c0bbc157e445f44fb 100644 --- a/crates/project/src/git_store.rs +++ b/crates/project/src/git_store.rs @@ -697,6 +697,7 @@ impl GitStore { ) -> Task>> { cx.spawn(async move |this, cx| { let buffer_snapshot = buffer.update(cx, |buffer, _| buffer.snapshot()); + let language_registry = buffer.update(cx, |buffer, _| buffer.language_registry()); let content = match oid { None => None, Some(oid) => Some( @@ -708,6 +709,11 @@ impl GitStore { buffer_diff .update(cx, |buffer_diff, cx| { + buffer_diff.language_changed( + buffer_snapshot.language().cloned(), + language_registry, + cx, + ); buffer_diff.set_base_text( content.map(|s| s.as_str().into()), buffer_snapshot.language().cloned(),