aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA-Walrus2022-08-06 15:46:50 +0000
committerGitHub2022-08-06 15:46:50 +0000
commitc00b8f7ad70e69d5365dc4d1247a8d47b53a8d2e (patch)
tree59b83486992fc54b837857ac853818d4039e6c85
parentfdd8bbf16bdbc19d2e814c463c1c327ee941eba9 (diff)
Fix tab highlight when tab is partially visible (#3313)
* Fix tab highlight when tab is partially visible * Make it style based, and not truncation based Dealing with truncating is a mess, especially when it comes to wide unicode graphemes. This way it should work no matter what. * Inline style calculation into branches
-rw-r--r--helix-term/src/ui/editor.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index 94ad8aea..6b316374 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -529,6 +529,8 @@ impl EditorView {
(grapheme.as_ref(), width)
};
+ let cut_off_start = offset.col.saturating_sub(visual_x as usize);
+
if !out_of_bounds {
// if we're offscreen just keep going until we hit a new line
surface.set_string(
@@ -541,7 +543,24 @@ impl EditorView {
style
},
);
+ } else if cut_off_start != 0 && cut_off_start < width {
+ // partially on screen
+ let rect = Rect::new(
+ viewport.x as u16,
+ viewport.y + line,
+ (width - cut_off_start) as u16,
+ 1,
+ );
+ surface.set_style(
+ rect,
+ if is_whitespace {
+ style.patch(whitespace_style)
+ } else {
+ style
+ },
+ );
}
+
if is_in_indent_area && !(grapheme == " " || grapheme == "\t") {
draw_indent_guides(visual_x, line, surface);
is_in_indent_area = false;