From 84328c303b954c83bb2769e2533de6cb697dc7b3 Mon Sep 17 00:00:00 2001 From: PJ Tatlow Date: Tue, 29 Oct 2024 04:35:31 -0600 Subject: [PATCH] Include commit summary in inline Git blame (#19759) Closes #19758 Release Notes: - Added feature to show commit summary as part of the inline Git blame --------- Co-authored-by: Thorsten Ball --- crates/collab/src/tests/editor_tests.rs | 1 + crates/editor/src/element.rs | 11 ++++++++++- crates/project/src/project_settings.rs | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/crates/collab/src/tests/editor_tests.rs b/crates/collab/src/tests/editor_tests.rs index 2a3c643f6deeb..beb1ef61ef988 100644 --- a/crates/collab/src/tests/editor_tests.rs +++ b/crates/collab/src/tests/editor_tests.rs @@ -1978,6 +1978,7 @@ async fn test_git_blame_is_forwarded(cx_a: &mut TestAppContext, cx_b: &mut TestA enabled: false, delay_ms: None, min_column: None, + show_commit_summary: false, }); cx_a.update(|cx| { SettingsStore::update_global(cx, |store, cx| { diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 3ece171b05ae7..489fe4c5eda62 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -4153,7 +4153,16 @@ fn render_inline_blame_entry( let relative_timestamp = blame_entry_relative_timestamp(&blame_entry); let author = blame_entry.author.as_deref().unwrap_or_default(); - let text = format!("{}, {}", author, relative_timestamp); + let summary_enabled = ProjectSettings::get_global(cx) + .git + .show_inline_commit_summary(); + + let text = match blame_entry.summary.as_ref() { + Some(summary) if summary_enabled => { + format!("{}, {} - {}", author, relative_timestamp, summary) + } + _ => format!("{}, {}", author, relative_timestamp), + }; let details = blame.read(cx).details_for_entry(&blame_entry); diff --git a/crates/project/src/project_settings.rs b/crates/project/src/project_settings.rs index 54dd969c39c2a..42d8ae6dacab6 100644 --- a/crates/project/src/project_settings.rs +++ b/crates/project/src/project_settings.rs @@ -111,6 +111,16 @@ impl GitSettings { _ => None, } } + + pub fn show_inline_commit_summary(&self) -> bool { + match self.inline_blame { + Some(InlineBlameSettings { + show_commit_summary, + .. + }) => show_commit_summary, + _ => false, + } + } } #[derive(Clone, Copy, Debug, Default, Serialize, Deserialize, JsonSchema)] @@ -141,11 +151,19 @@ pub struct InlineBlameSettings { /// /// Default: 0 pub min_column: Option, + /// Whether to show commit summary as part of the inline blame. + /// + /// Default: false + #[serde(default = "false_value")] + pub show_commit_summary: bool, } const fn true_value() -> bool { true } +const fn false_value() -> bool { + true +} #[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema)] pub struct BinarySettings {