Handle pixel-down to last line when no trailing newline
This commit is contained in:
@@ -574,6 +574,7 @@ impl DisplaySnapshot {
|
||||
) -> Line {
|
||||
let mut styles = Vec::new();
|
||||
let mut line = String::new();
|
||||
let mut ended_in_newline = false;
|
||||
|
||||
let range = display_row..display_row + 1;
|
||||
for chunk in self.highlighted_chunks(range, false, editor_style) {
|
||||
@@ -589,6 +590,7 @@ impl DisplaySnapshot {
|
||||
} else {
|
||||
Cow::Borrowed(&editor_style.text)
|
||||
};
|
||||
ended_in_newline = chunk.chunk.ends_with("\n");
|
||||
|
||||
styles.push((
|
||||
chunk.chunk.len(),
|
||||
@@ -600,6 +602,22 @@ impl DisplaySnapshot {
|
||||
));
|
||||
}
|
||||
|
||||
// our pixel positioning logic assumes each line ends in \n,
|
||||
// this is almost always true except for the last line which
|
||||
// may have no trailing newline.
|
||||
if !ended_in_newline && display_row == self.max_point().row() {
|
||||
line.push_str("\n");
|
||||
|
||||
styles.push((
|
||||
"\n".len(),
|
||||
RunStyle {
|
||||
font_id: editor_style.text.font_id,
|
||||
color: editor_style.text_color,
|
||||
underline: editor_style.text.underline,
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
text_layout_cache.layout_str(&line, editor_style.text.font_size, &styles)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user