This commit is contained in:
Nathan Sobo 2022-03-10 11:32:14 -07:00
parent ac1eb19f83
commit e6b1fea117
9 changed files with 280 additions and 79 deletions

View file

@ -1,6 +1,7 @@
use super::{
fold_map,
tab_map::{self, TabEdit, TabPoint, TabSnapshot},
TextHighlights,
};
use crate::{MultiBufferSnapshot, Point};
use gpui::{
@ -433,6 +434,7 @@ impl WrapSnapshot {
let mut chunks = new_tab_snapshot.chunks(
TabPoint::new(edit.new_rows.start, 0)..new_tab_snapshot.max_point(),
false,
None,
);
let mut edit_transforms = Vec::<Transform>::new();
for _ in edit.new_rows.start..edit.new_rows.end {
@ -558,11 +560,16 @@ impl WrapSnapshot {
}
pub fn text_chunks(&self, wrap_row: u32) -> impl Iterator<Item = &str> {
self.chunks(wrap_row..self.max_point().row() + 1, false)
self.chunks(wrap_row..self.max_point().row() + 1, false, None)
.map(|h| h.text)
}
pub fn chunks<'a>(&'a self, rows: Range<u32>, language_aware: bool) -> WrapChunks<'a> {
pub fn chunks<'a>(
&'a self,
rows: Range<u32>,
language_aware: bool,
text_highlights: Option<&'a TextHighlights>,
) -> WrapChunks<'a> {
let output_start = WrapPoint::new(rows.start, 0);
let output_end = WrapPoint::new(rows.end, 0);
let mut transforms = self.transforms.cursor::<(WrapPoint, TabPoint)>();
@ -575,9 +582,11 @@ impl WrapSnapshot {
.to_tab_point(output_end)
.min(self.tab_snapshot.max_point());
WrapChunks {
input_chunks: self
.tab_snapshot
.chunks(input_start..input_end, language_aware),
input_chunks: self.tab_snapshot.chunks(
input_start..input_end,
language_aware,
text_highlights,
),
input_chunk: Default::default(),
output_position: output_start,
max_output_row: rows.end,
@ -1280,7 +1289,7 @@ mod tests {
}
let actual_text = self
.chunks(start_row..end_row, true)
.chunks(start_row..end_row, true, None)
.map(|c| c.text)
.collect::<String>();
assert_eq!(