editor: extend diff hunk range for custom transform blocks. (#4012)

Reported by Mikayla:

![image](https://github.com/zed-industries/zed/assets/24362066/b744d82e-328f-4554-becf-96f9fa92bfc8)
Note how the line with rust analyzer error does not have a git diff
hunk.
vs:

![image](https://github.com/zed-industries/zed/assets/24362066/e285af7a-b8ab-40e9-a9c6-b4ab8d6c4cd0)

Release Notes:
- N/A
This commit is contained in:
Piotr Osiewicz 2024-01-11 12:26:12 +01:00 committed by GitHub
parent 31689c09e5
commit 0db7559e96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -809,13 +809,18 @@ impl EditorElement {
// the hunk might include the rows of that header.
// Making the range inclusive doesn't quite cut it, as we rely on the exclusivity for the soft wrap.
// Instead, we simply check whether the range we're dealing with includes
// any custom elements and if so, we stop painting the diff hunk on the first row of that custom element.
// any excerpt headers and if so, we stop painting the diff hunk on the first row of that header.
let end_row_in_current_excerpt = layout
.position_map
.snapshot
.blocks_in_range(start_row..end_row)
.next()
.map(|(start_row, _)| start_row)
.find_map(|(start_row, block)| {
if matches!(block, TransformBlock::ExcerptHeader { .. }) {
Some(start_row)
} else {
None
}
})
.unwrap_or(end_row);
let start_y = start_row as f32 * line_height - scroll_top;