Only draw indent guides within bounds
Better performance, and otherwise very long lines with lots of tabs will wrap around the u16 and come back on the other side, messing up the beginning skip_levels.
This commit is contained in:
parent
2c36e33e0a
commit
1de02a147c
1 changed files with 6 additions and 8 deletions
|
@ -467,16 +467,14 @@ impl EditorView {
|
|||
|
||||
let starting_indent =
|
||||
(offset.col / tab_width) + config.indent_guides.skip_levels as usize;
|
||||
// TODO: limit to a max indent level too. It doesn't cause visual artifacts but it would avoid some
|
||||
// extra loops if the code is deeply nested.
|
||||
|
||||
for i in starting_indent..(indent_level / tab_width) {
|
||||
surface.set_string(
|
||||
(viewport.x as usize + (i * tab_width) - offset.col) as u16,
|
||||
viewport.y + line,
|
||||
&indent_guide_char,
|
||||
indent_guide_style,
|
||||
);
|
||||
let x = (viewport.x as usize + (i * tab_width) - offset.col) as u16;
|
||||
let y = viewport.y + line;
|
||||
if !surface.in_bounds(x, y) {
|
||||
break;
|
||||
}
|
||||
surface.set_string(x, y, &indent_guide_char, indent_guide_style);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue