Correctly store current chunk offset in fold_map::HighlightedChunks
This commit is contained in:
@@ -741,7 +741,7 @@ impl<'a> Iterator for Chunks<'a> {
|
||||
pub struct HighlightedChunks<'a> {
|
||||
transform_cursor: Cursor<'a, Transform, DisplayOffset, TransformSummary>,
|
||||
buffer_chunks: buffer::HighlightedChunks<'a>,
|
||||
buffer_chunk: Option<(&'a str, Option<usize>)>,
|
||||
buffer_chunk: Option<(usize, &'a str, Option<usize>)>,
|
||||
buffer_offset: usize,
|
||||
}
|
||||
|
||||
@@ -771,14 +771,18 @@ impl<'a> Iterator for HighlightedChunks<'a> {
|
||||
return Some((display_text, None));
|
||||
}
|
||||
|
||||
// Retrieve a chunk from the current buffer cursor's location.
|
||||
// Retrieve a chunk from the current location in the buffer.
|
||||
if self.buffer_chunk.is_none() {
|
||||
self.buffer_chunk = self.buffer_chunks.next();
|
||||
let chunk_offset = self.buffer_chunks.offset();
|
||||
self.buffer_chunk = self
|
||||
.buffer_chunks
|
||||
.next()
|
||||
.map(|(chunk, capture_ix)| (chunk_offset, chunk, capture_ix));
|
||||
}
|
||||
|
||||
// Otherwise, take a chunk from the buffer's text.
|
||||
if let Some((mut chunk, capture_ix)) = self.buffer_chunk {
|
||||
let offset_in_chunk = self.buffer_offset - self.buffer_chunks.offset();
|
||||
if let Some((chunk_offset, mut chunk, capture_ix)) = self.buffer_chunk {
|
||||
let offset_in_chunk = self.buffer_offset - chunk_offset;
|
||||
chunk = &chunk[offset_in_chunk..];
|
||||
|
||||
// Truncate the chunk so that it ends at the next fold.
|
||||
|
||||
Reference in New Issue
Block a user