vim-patch:8.1.2072: "gk" moves to start of line instead of upwards

Problem:    "gk" moves to start of line instead of upwards.
Solution:   Fix off-by-one error. (Christian Brabandt, closes vim/vim#4969)
03ac52fc02
This commit is contained in:
Jan Edmund Lazo
2019-09-24 20:01:58 -04:00
parent 0253f0cd92
commit 24c4d4e125
2 changed files with 26 additions and 4 deletions

View File

@@ -3932,11 +3932,11 @@ static bool nv_screengo(oparg_T *oap, int dir, long dist)
while (dist--) {
if (dir == BACKWARD) {
if ((long)curwin->w_curswant >= width2)
/* move back within line */
if (curwin->w_curswant > width2) {
// move back within line
curwin->w_curswant -= width2;
else {
/* to previous line */
} else {
// to previous line
if (curwin->w_cursor.lnum == 1) {
retval = false;
break;

View File

@@ -2617,3 +2617,25 @@ Piece of Java
close!
endfunc
func Test_normal_gk()
" needs 80 column new window
new
vert 80new
put =[repeat('x',90)..' {{{1', 'x {{{1']
norm! gk
" In a 80 column wide terminal the window will be only 78 char
" (because Vim will leave space for the other window),
" but if the terminal is larger, it will be 80 chars, so verify the
" cursor column correctly.
call assert_equal(winwidth(0)+1, col('.'))
call assert_equal(winwidth(0)+1, virtcol('.'))
norm! j
call assert_equal(6, col('.'))
call assert_equal(6, virtcol('.'))
norm! gk
call assert_equal(95, col('.'))
call assert_equal(95, virtcol('.'))
bw!
bw!
endfunc