Find correct last_visible_line in Editor::highlight

This commit is contained in:
Héctor Ramón Jiménez 2023-09-18 13:39:47 +02:00
parent 8f8528a4cc
commit d1440ceca6
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -538,11 +538,27 @@ impl editor::Editor for Editor {
let internal = self.internal();
let buffer = internal.editor.buffer();
let scroll = buffer.scroll();
let visible_lines = buffer.visible_lines();
let last_visible_line = ((scroll + visible_lines) as usize)
.min(buffer.lines.len())
.saturating_sub(1);
let mut window = buffer.scroll() + buffer.visible_lines();
let last_visible_line = buffer
.lines
.iter()
.enumerate()
.find_map(|(i, line)| {
let visible_lines = line
.layout_opt()
.as_ref()
.expect("Line layout should be cached")
.len() as i32;
if window > visible_lines {
window -= visible_lines;
None
} else {
Some(i)
}
})
.unwrap_or(buffer.lines.len());
let current_line = highlighter.current_line();