Unnamed repository; edit this file 'description' to name the repository.
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.
A-Walrus 2022-10-17
parent 2c36e33 · commit 1de02a1
-rw-r--r--helix-term/src/ui/editor.rs14
1 files changed, 6 insertions, 8 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index e05136d0..4074534b 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -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);
}
};