From 463f58dfda3d72865860e53759ab001c94a85989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Wed, 7 Apr 2021 13:38:50 +0900 Subject: [PATCH] Fix clamping scroll in certain cases. .clamp(min, max) requires that min < max. In some cases first + scrolloff > last - scrolloff and we would panic. --- helix-term/src/commands.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 4d9c24a0..b79f3b79 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -462,10 +462,9 @@ fn scroll(cx: &mut Context, offset: usize, direction: Direction) { .min(doc_last_line); // clamp into viewport - let line = (view.first_line + cursor_off).clamp( - view.first_line + scrolloff, - last_line.saturating_sub(scrolloff), - ); + let line = (view.first_line + cursor_off) + .max(view.first_line + scrolloff) + .min(last_line.saturating_sub(scrolloff)); let text = doc.text().slice(..); let pos = pos_at_coords(text, Position::new(line, cursor.col)); // this func will properly truncate to line end