# editor: Limit row highlight expansion to viewport \(\#63395\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/3f00b5d75d11973f743847c62b5237ef0648545e)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 3f00b5d75d11973f743847c62b5237ef0648545e

Requested commit: 3f00b5d75d11973f743847c62b5237ef0648545e

Commit: 3f00b5d75d11973f743847c62b5237ef0648545e

Tree: d7cca6e46432aa2e5985b513303146fdae3dbb3d

Author: Conrad Irwin

Committer: GitHub

## Message

```
editor: Limit row highlight expansion to viewport (#63395)

## Summary

- Limit row-highlight expansion during editor rendering to ranges that
intersect the visible viewport.
- Use the stable multibuffer anchor ordering established by #62636 to
binary-prune every highlight group, including ranges with diff-base
anchors.
- Preserve exact-boundary highlights for custom blocks and add
regression coverage comparing viewport results with the full-editor
result.

This is stacked on #63394 so the benchmark fixture and batched conflict
anchor conversion are available independently.

## Performance

The severe synthetic workload contains 128 conflicted files, 256
conflict regions per file, and 163,840 accumulated row-highlight ranges.

In the initial paired measurement, viewport filtering reduced:

- project-diff refresh from 67.6–87.8 seconds to 13.47–13.53 seconds;
- cumulative row-highlight expansion from 53–74 seconds to about 7.7
milliseconds;
- the longest individual expansion from 817–875 milliseconds to
0.063–0.071 milliseconds;
- examined highlight ranges from 10.7–15.6 million to about 2,500.

After isolating this commit from the separate block-insertion experiment
and hardening the anchor-boundary behavior, two severe-workload runs
completed in 17.75 and 20.51 seconds. Those isolated runs are not a
direct A/B comparison with the initial numbers because they
intentionally omit the block-insertion fast path.

## Validation

- `cargo test -p editor test_highlighted_display_rows_in_range`
- `./script/clippy -p editor`
- `git diff --check`
- Two independent code reviews focused on viewport boundaries and anchor
ordering

Release Notes:

- Improved project diff performance for repositories with many merge
conflicts.
```

## Parents

- [81df6f4af07945113a1e1df2ec1945a638d7d078](https://git.cafe/gitcafe/zed/commit/81df6f4af07945113a1e1df2ec1945a638d7d078?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/3f00b5d75d11973f743847c62b5237ef0648545e?format=markdown)
