vim: Fix ctrl-d/u going to top bottom (#14620)

Release Notes:

- vim: Fixed ctrl-d/ctrl-u getting to top/bottom of buffer (#13250)
This commit is contained in:
Conrad Irwin
2024-07-16 22:56:44 -06:00
committed by GitHub
parent acc9c2421b
commit 33f68882c1
4 changed files with 76 additions and 52 deletions
+8 -12
View File
@@ -1,4 +1,3 @@
use crate::Editor;
use serde::Deserialize;
use ui::{px, Pixels};
@@ -11,19 +10,16 @@ pub enum ScrollAmount {
}
impl ScrollAmount {
pub fn lines(&self, editor: &mut Editor) -> f32 {
pub fn lines(&self, mut visible_line_count: f32) -> f32 {
match self {
Self::Line(count) => *count,
Self::Page(count) => editor
.visible_line_count()
.map(|mut l| {
// for full pages subtract one to leave an anchor line
if count.abs() == 1.0 {
l -= 1.0
}
(l * count).trunc()
})
.unwrap_or(0.),
Self::Page(count) => {
// for full pages subtract one to leave an anchor line
if count.abs() == 1.0 {
visible_line_count -= 1.0
}
(visible_line_count * count).trunc()
}
}
}