From 642643de01fe8aec013fa39c4ba4e256b5d0e269 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 7 Oct 2025 20:52:59 +0200 Subject: [PATCH] language: Fix `HighlightedText::first_line_preview` creating incorrect highlight ranges (#39705) Fixes ZED-1XW Release Notes: - N/A *or* Added/Fixed/Improved ... --- crates/language/src/buffer.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index 82b879861886982016b80b94ced9e5907a7e7d16..1605eea051b660f7285481223b0b3b9f97aef732 100644 --- a/crates/language/src/buffer.rs +++ b/crates/language/src/buffer.rs @@ -581,7 +581,7 @@ pub struct HighlightedText { #[derive(Default, Debug)] struct HighlightedTextBuilder { pub text: String, - pub highlights: Vec<(Range, HighlightStyle)>, + highlights: Vec<(Range, HighlightStyle)>, } impl HighlightedText { @@ -624,10 +624,11 @@ impl HighlightedText { let preview_highlights = self .highlights .into_iter() + .skip_while(|(range, _)| range.end <= preview_start_ix) .take_while(|(range, _)| range.start < newline_ix) .filter_map(|(mut range, highlight)| { range.start = range.start.saturating_sub(preview_start_ix); - range.end = range.end.saturating_sub(preview_start_ix).min(newline_ix); + range.end = range.end.min(newline_ix).saturating_sub(preview_start_ix); if range.is_empty() { None } else {