mirror of
https://github.com/vim/vim.git
synced 2026-05-28 00:21:37 +02:00
patch 9.1.2130: Page scrolling in Insert mode beeps
Problem: Page scrolling in Insert mode beeps (after 9.1.0211).
Solution: Fix incorrect return value of pagescroll(). Also invert the
return value of scroll_with_sms() to be less confusing and
match comments (zeertzjq).
fixes: #19326
closes: #19327
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
61044eb536
commit
a8ce914db1
@@ -52463,8 +52463,14 @@ Solution: Validate the bufref after buf_reload (Sean Dewar).
|
||||
|
||||
Patch 9.1.2129
|
||||
Problem: MS-Windows: font size calculation slightly wrong, causing
|
||||
vertical line gaps (Maxim Kim, after v9.1.2127)
|
||||
vertical line gaps (Maxim Kim, after v9.1.2127)
|
||||
Solution: Update font size calculation when using DirectX
|
||||
(Yasuhiro Matsumoto).
|
||||
(Yasuhiro Matsumoto).
|
||||
|
||||
Patch 9.1.2130
|
||||
Problem: Page scrolling in Insert mode beeps (after 9.1.0211).
|
||||
Solution: Fix incorrect return value of pagescroll(). Also invert the
|
||||
return value of scroll_with_sms() to be less confusing and
|
||||
match comments (zeertzjq).
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:fdm=manual:nofoldenable
|
||||
|
||||
+12
-12
@@ -3238,11 +3238,11 @@ static int scroll_with_sms(int dir, long count, long *curscount)
|
||||
}
|
||||
curwin->w_p_sms = prev_sms;
|
||||
|
||||
return curwin->w_topline == prev_topline
|
||||
return curwin->w_topline != prev_topline
|
||||
#ifdef FEAT_DIFF
|
||||
&& curwin->w_topfill == prev_topfill
|
||||
|| curwin->w_topfill != prev_topfill
|
||||
#endif
|
||||
&& curwin->w_skipcol == prev_skipcol;
|
||||
|| curwin->w_skipcol != prev_skipcol;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3255,7 +3255,7 @@ static int scroll_with_sms(int dir, long count, long *curscount)
|
||||
int
|
||||
pagescroll(int dir, long count, int half)
|
||||
{
|
||||
int nochange = TRUE;
|
||||
int did_move = FALSE;
|
||||
int buflen = curbuf->b_ml.ml_line_count;
|
||||
colnr_T prev_col = curwin->w_cursor.col;
|
||||
colnr_T prev_curswant = curwin->w_curswant;
|
||||
@@ -3291,7 +3291,7 @@ pagescroll(int dir, long count, int half)
|
||||
// (Try to) scroll the window unless already at the end of the buffer.
|
||||
if (count > 0)
|
||||
{
|
||||
nochange = scroll_with_sms(dir, count, &curscount);
|
||||
did_move = scroll_with_sms(dir, count, &curscount);
|
||||
curwin->w_cursor.lnum = prev_lnum;
|
||||
curwin->w_cursor.col = prev_col;
|
||||
curwin->w_curswant = prev_curswant;
|
||||
@@ -3310,9 +3310,9 @@ pagescroll(int dir, long count, int half)
|
||||
// Scroll [count] times 'window' or current window height lines.
|
||||
count *= ((ONE_WINDOW && p_window > 0 && p_window < Rows - 1) ?
|
||||
MAX(1, p_window - 2) : get_scroll_overlap(dir));
|
||||
nochange = scroll_with_sms(dir, count, &count);
|
||||
did_move = scroll_with_sms(dir, count, &count);
|
||||
|
||||
if (!nochange)
|
||||
if (did_move)
|
||||
{
|
||||
// Place cursor at top or bottom of window.
|
||||
validate_botline();
|
||||
@@ -3330,19 +3330,19 @@ pagescroll(int dir, long count, int half)
|
||||
// Move cursor to first line of closed fold.
|
||||
foldAdjustCursor();
|
||||
#endif
|
||||
nochange = nochange
|
||||
&& prev_col == curwin->w_cursor.col
|
||||
&& prev_lnum == curwin->w_cursor.lnum;
|
||||
did_move = did_move
|
||||
|| prev_col != curwin->w_cursor.col
|
||||
|| prev_lnum != curwin->w_cursor.lnum;
|
||||
|
||||
// Error if both the viewport and cursor did not change.
|
||||
if (nochange)
|
||||
if (!did_move)
|
||||
beep_flush();
|
||||
else if (!curwin->w_p_sms)
|
||||
beginline(BL_SOL | BL_FIX);
|
||||
else if (p_sol)
|
||||
nv_g_home_m_cmd(&ca);
|
||||
|
||||
return nochange;
|
||||
return did_move ? OK : FAIL;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
+40
-40
@@ -1360,97 +1360,97 @@ func Test_edit_PAGEUP_PAGEDOWN()
|
||||
10new
|
||||
call setline(1, repeat(['abc def ghi'], 30))
|
||||
call cursor(1, 1)
|
||||
call feedkeys("i\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 9, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 17, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 25, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<PageDown>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("i\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 29, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 21, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 13, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
" <S-Up> is the same as <PageUp>
|
||||
" <S-Down> is the same as <PageDown>
|
||||
call cursor(1, 1)
|
||||
call feedkeys("i\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 9, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 17, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 25, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("i\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 1, 0], getpos('.'))
|
||||
call feedkeys("i\<S-Down>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("i\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 29, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 21, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 13, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 1, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
set nostartofline
|
||||
call cursor(30, 11)
|
||||
norm! zt
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 29, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 21, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 13, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageUp>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<PageUp>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
call cursor(1, 1)
|
||||
call feedkeys("A\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 9, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 17, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 25, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageDown>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<PageDown>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<PageDown>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 11, 0], getpos('.'))
|
||||
" <S-Up> is the same as <PageUp>
|
||||
" <S-Down> is the same as <PageDown>
|
||||
call cursor(30, 11)
|
||||
norm! zt
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 29, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 21, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 13, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Up>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<S-Up>\<esc>", "tnix")')
|
||||
call assert_equal([0, 10, 11, 0], getpos('.'))
|
||||
call cursor(1, 1)
|
||||
call feedkeys("A\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 9, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 17, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 25, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Down>\<esc>", 'tnix')
|
||||
call assert_nobeep('call feedkeys("A\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 11, 0], getpos('.'))
|
||||
call feedkeys("A\<S-Down>\<esc>", 'tnix')
|
||||
call assert_beeps('call feedkeys("A\<S-Down>\<esc>", "tnix")')
|
||||
call assert_equal([0, 30, 11, 0], getpos('.'))
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
@@ -734,6 +734,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2130,
|
||||
/**/
|
||||
2129,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user