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
This commit is contained in:
Pascal Kuthe 2023-03-22 16:45:22 +01:00 committed by Blaž Hrastnik
parent d6c8e0c946
commit 15e751b9a2

View File

@ -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,