From 15e751b9a291b8732468235af95142bfbd0c9be2 Mon Sep 17 00:00:00 2001 From: Pascal Kuthe Date: Wed, 22 Mar 2023 16:45:22 +0100 Subject: [PATCH] make scrolloff calculation consistent While scrolling (with the `scroll`) command scrolloff was calculated slightly differently than in `ensure_cursor_in_view` which could cause the cursor to get stuck while scrolling --- helix-term/src/commands.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index d53df831e..4a7b78839 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1470,7 +1470,7 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) { let cursor = range.cursor(text); let height = view.inner_height(); - let scrolloff = config.scrolloff.min(height / 2); + let scrolloff = config.scrolloff.min(height.saturating_sub(1) as usize / 2); let offset = match direction { Forward => offset as isize, Backward => -(offset as isize), @@ -1510,7 +1510,7 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) { head = char_idx_at_visual_offset( doc_text, view.offset.anchor, - (view.offset.vertical_offset + height - scrolloff) as isize, + (view.offset.vertical_offset + height - scrolloff - 1) as isize, 0, &text_fmt, &annotations,