summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Kuthe2023-03-22 15:30:51 +0000
committerBlaž Hrastnik2023-03-27 00:54:40 +0000
commitd6c8e0c946d768abdb2d688cb7cd67683ac51240 (patch)
tree91845673805c9109a685a1ab11fe8f85af57d135
parent7cf448eb5bfd604e1342a1d0f5685e3231f6c1a9 (diff)
allow scrolling past virtual text line
Virtual text lines (either caused by softwrapped inlay hints that take multiple or line annotations) currently block scrolling downwards. if the visual offset passed to char_idx_at_visual_offset or visual_offset_from_block is within a virtual text line then the char position before the virtual text and a visual offset are returned. We previously ignored that visual offset and as a result the cursor would be stuck at the start of the virtual text. This commit fixes that by simply moving the cursor to the next char (so past the virtual text) if this visual offset is non-zero
-rw-r--r--helix-term/src/commands.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 1c1edece..d53df831 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -1489,18 +1489,19 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) {
&annotations,
);
- let head;
+ let mut head;
match direction {
Forward => {
- head = char_idx_at_visual_offset(
+ let off;
+ (head, off) = char_idx_at_visual_offset(
doc_text,
view.offset.anchor,
(view.offset.vertical_offset + scrolloff) as isize,
0,
&text_fmt,
&annotations,
- )
- .0;
+ );
+ head += (off != 0) as usize;
if head <= cursor {
return;
}