0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 9.1.0215: Half-page scrolling does not support smooth-scrolling

Problem:  Page-wise scrolling with Ctrl-D/Ctrl-U implements
          it's own logic to change the topline and cursor.
          More logic than necessary for scrolling with Ctrl-F/Ctrl-B
          was removed in patch 9.1.0211.
Solution: Re-use the logic from Ctrl-E/Ctrl-Y/Ctrl-F/Ctrl-B while
          staying backward compatible as much as possible.
          Restore some of the logic that determined how many lines will
          be scrolled (Luuk van Baal)

closes: #14316

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Luuk van Baal
2024-03-28 10:07:29 +01:00
committed by Christian Brabandt
parent 982e191b38
commit 5a2e3ec9ac
12 changed files with 166 additions and 242 deletions

View File

@@ -2066,7 +2066,7 @@ nv_page(cmdarg_T *cap)
goto_tabpage((int)cap->count0);
}
else
(void)onepage(cap->arg, cap->count1);
(void)pagescroll(cap->arg, cap->count1, FALSE);
}
/*
@@ -7263,12 +7263,8 @@ nv_at(cmdarg_T *cap)
static void
nv_halfpage(cmdarg_T *cap)
{
if ((cap->cmdchar == Ctrl_U && curwin->w_cursor.lnum == 1)
|| (cap->cmdchar == Ctrl_D
&& curwin->w_cursor.lnum == curbuf->b_ml.ml_line_count))
clearopbeep(cap->oap);
else if (!checkclearop(cap->oap))
halfpage(cap->cmdchar == Ctrl_D, cap->count0);
if (!checkclearop(cap->oap))
pagescroll(cap->cmdchar == Ctrl_D, cap->count0, TRUE);
}
/*