From 5c716af7a2c2fff36080d51be3cb9fa30aa36bc7 Mon Sep 17 00:00:00 2001
From: Pascal Kuthe <pascal.kuthe@semimod.de>
Date: Fri, 3 Mar 2023 17:05:40 +0100
Subject: [PATCH] Fix scrolloff at view bottom (#6142)

Fixes a regression introduced in #5420 where a scrolloff of `x - 1`
was used instead if `x` at the bottom of the screen. This was
especially problematic if the scrolloff was set to `0` in that case
the scrolloff behaved as tough set to `-1` and the cursor disappeared
from the view if scrolled to the botoom.
---
 helix-view/src/view.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/helix-view/src/view.rs b/helix-view/src/view.rs
index f793cbe3..7bfbb241 100644
--- a/helix-view/src/view.rs
+++ b/helix-view/src/view.rs
@@ -242,7 +242,7 @@ impl View {
                 at_top = true;
                 true
             }
-            Some((visual_pos, _)) if visual_pos.row >= vertical_viewport_end - scrolloff => {
+            Some((visual_pos, _)) if visual_pos.row + scrolloff + 1 >= vertical_viewport_end => {
                 if CENTERING && visual_pos.row >= vertical_viewport_end {
                     // cursor out of view
                     return None;
@@ -257,7 +257,7 @@ impl View {
             let v_off = if at_top {
                 scrolloff as isize
             } else {
-                viewport.height as isize - scrolloff as isize
+                viewport.height as isize - scrolloff as isize - 1
             };
             (offset.anchor, offset.vertical_offset) =
                 char_idx_at_visual_offset(doc_text, cursor, -v_off, 0, &text_fmt, &annotations);