Add minimum column option to git inline blame (#10682)

Release Notes:

- Added a setting to determine the minimum column where the inline blame
information is shown. Example: `{{"git": {"inline_blame": {"min_column":
80}}}` ([#10555](https://github.com/zed-industries/zed/issues/10555)).

Demo Video:


https://github.com/zed-industries/zed/assets/1185253/61343dbe-9002-4bd1-b0d4-403f8da79050

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
This commit is contained in:
Shreekar Halvi 2024-04-18 14:58:47 +05:30 committed by GitHub
parent 1b75f9d620
commit bb97432e9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 3 deletions

View File

@ -2006,6 +2006,7 @@ async fn test_git_blame_is_forwarded(cx_a: &mut TestAppContext, cx_b: &mut TestA
let inline_blame_off_settings = Some(InlineBlameSettings {
enabled: false,
delay_ms: None,
min_column: None,
});
cx_a.update(|cx| {
cx.update_global(|store: &mut SettingsStore, cx| {

View File

@ -45,7 +45,7 @@ use smallvec::SmallVec;
use std::{
any::TypeId,
borrow::Cow,
cmp::{self, Ordering},
cmp::{self, max, Ordering},
fmt::Write,
iter, mem,
ops::Range,
@ -1141,8 +1141,17 @@ impl EditorElement {
let start_x = {
const INLINE_BLAME_PADDING_EM_WIDTHS: f32 = 6.;
let line_width = line_layout.line.width;
content_origin.x + line_width + (em_width * INLINE_BLAME_PADDING_EM_WIDTHS)
let padded_line_width =
line_layout.line.width + (em_width * INLINE_BLAME_PADDING_EM_WIDTHS);
let min_column = ProjectSettings::get_global(cx)
.git
.inline_blame
.and_then(|settings| settings.min_column)
.map(|col| self.column_pixels(col as usize, cx))
.unwrap_or(px(0.));
content_origin.x + max(padded_line_width, min_column)
};
let absolute_offset = point(start_x, start_y);

View File

@ -79,6 +79,10 @@ pub struct InlineBlameSettings {
///
/// Default: 0
pub delay_ms: Option<u64>,
/// The minimum column number to show the inline blame information at
///
/// Default: 0
pub min_column: Option<u32>,
}
const fn true_value() -> bool {