vim-patch:8.2.2711: "gj" in a closed fold does not move out of the fold

Problem:    "gj" in a closed fold does not move out of the fold. (Marco Hinz)
Solution:   Add a check for being in a closed fold. (closes vim/vim#8062)
3c49e74e18

N/A patches for version.c:

vim-patch:8.2.2709: the GTK GUI has a gap next to the scrollbar

Problem:    The GTK GUI has a gap next to the scrollbar.
Solution:   Calculate the scrollbar padding for GTK. (closes vim/vim#8027)
26af8e54ff

vim-patch:8.2.2717: GTK menu items don't show a tooltip

Problem:    GTK menu items don't show a tooltip.
Solution:   Add a callback to show the tooltip. (Leonid V. Fedorenchik,
            closes vim/vim#8067, closes vim/vim#7810)
ce5b06a6a9
This commit is contained in:
Jan Edmund Lazo 2021-04-04 21:19:03 -04:00
parent 2c4e9c5245
commit 62a3312b88
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
2 changed files with 27 additions and 19 deletions

View File

@ -3971,7 +3971,8 @@ static bool nv_screengo(oparg_T *oap, int dir, long dist)
while (dist--) {
if (dir == BACKWARD) {
if (curwin->w_curswant >= width1) {
if (curwin->w_curswant >= width1
&& !hasFolding(curwin->w_cursor.lnum, NULL, NULL)) {
// Move back within the line. This can give a negative value
// for w_curswant if width1 < width2 (with cpoptions+=n),
// which will get clipped to column 0.
@ -4003,14 +4004,16 @@ static bool nv_screengo(oparg_T *oap, int dir, long dist)
n = ((linelen - width1 - 1) / width2 + 1) * width2 + width1;
else
n = width1;
if (curwin->w_curswant + width2 < (colnr_T)n)
/* move forward within line */
if (curwin->w_curswant + width2 < (colnr_T)n
&& !hasFolding(curwin->w_cursor.lnum, NULL, NULL)) {
// move forward within line
curwin->w_curswant += width2;
else {
/* to next line */
/* Move to the end of a closed fold. */
} else {
// to next line
// Move to the end of a closed fold.
(void)hasFolding(curwin->w_cursor.lnum, NULL,
&curwin->w_cursor.lnum);
&curwin->w_cursor.lnum);
if (curwin->w_cursor.lnum == curbuf->b_ml.ml_line_count) {
retval = false;
break;

View File

@ -823,31 +823,36 @@ func Test_fold_create_delete()
endfunc
func Test_fold_relative_move()
enew!
new
set fdm=indent sw=2 wrap tw=80
let content = [ ' foo', ' bar', ' baz',
\ repeat('x', &columns + 1),
\ ' foo', ' bar', ' baz'
let longtext = repeat('x', &columns + 1)
let content = [ ' foo', ' ' .. longtext, ' baz',
\ longtext,
\ ' foo', ' ' .. longtext, ' baz'
\ ]
call append(0, content)
normal zM
call cursor(3, 1)
call assert_true(foldclosed(line('.')))
normal gj
call assert_equal(2, winline())
for lnum in range(1, 3)
call cursor(lnum, 1)
call assert_true(foldclosed(line('.')))
normal gj
call assert_equal(2, winline())
endfor
call cursor(2, 1)
call assert_true(foldclosed(line('.')))
normal 2gj
call assert_equal(3, winline())
call cursor(5, 1)
call assert_true(foldclosed(line('.')))
normal gk
call assert_equal(3, winline())
for lnum in range(5, 7)
call cursor(lnum, 1)
call assert_true(foldclosed(line('.')))
normal gk
call assert_equal(3, winline())
endfor
call cursor(6, 1)
call assert_true(foldclosed(line('.')))