diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index e05136d02..4074534bf 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); } };