Skip to content

Commit

Permalink
Add minimum column option to git inline blame (#10682)
Browse files Browse the repository at this point in the history
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](#10555)).

Demo Video:


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

---------

Co-authored-by: Thorsten Ball <mrnugget@gmail.com>
  • Loading branch information
hshreekar and mrnugget committed Apr 18, 2024
1 parent 1b75f9d commit bb97432
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
1 change: 1 addition & 0 deletions crates/collab/src/tests/editor_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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| {
Expand Down
15 changes: 12 additions & 3 deletions crates/editor/src/element.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions crates/project/src/project_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit bb97432

Please sign in to comment.