diff --git a/crates/git_ui/src/text_diff_view.rs b/crates/git_ui/src/text_diff_view.rs index 1f80e2ace7fc67d1ffcefe220ac95a94b04b088f..57563a39beb455ed86cb8605c2444bbcda6ba4ad 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 2f0dc3f06bf13ad1f4d455e1a3857fafb02710c6..6b75601b8731190af9812a40b93b5086e45013c7 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(),