mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
2c4e9c5245
commit
62a3312b88
@ -3971,7 +3971,8 @@ static bool nv_screengo(oparg_T *oap, int dir, long dist)
|
|||||||
|
|
||||||
while (dist--) {
|
while (dist--) {
|
||||||
if (dir == BACKWARD) {
|
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
|
// Move back within the line. This can give a negative value
|
||||||
// for w_curswant if width1 < width2 (with cpoptions+=n),
|
// for w_curswant if width1 < width2 (with cpoptions+=n),
|
||||||
// which will get clipped to column 0.
|
// 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;
|
n = ((linelen - width1 - 1) / width2 + 1) * width2 + width1;
|
||||||
else
|
else
|
||||||
n = width1;
|
n = width1;
|
||||||
if (curwin->w_curswant + width2 < (colnr_T)n)
|
if (curwin->w_curswant + width2 < (colnr_T)n
|
||||||
/* move forward within line */
|
&& !hasFolding(curwin->w_cursor.lnum, NULL, NULL)) {
|
||||||
|
// move forward within line
|
||||||
curwin->w_curswant += width2;
|
curwin->w_curswant += width2;
|
||||||
else {
|
} else {
|
||||||
/* to next line */
|
// to next line
|
||||||
/* Move to the end of a closed fold. */
|
|
||||||
|
// Move to the end of a closed fold.
|
||||||
(void)hasFolding(curwin->w_cursor.lnum, NULL,
|
(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) {
|
if (curwin->w_cursor.lnum == curbuf->b_ml.ml_line_count) {
|
||||||
retval = false;
|
retval = false;
|
||||||
break;
|
break;
|
||||||
|
@ -823,31 +823,36 @@ func Test_fold_create_delete()
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_fold_relative_move()
|
func Test_fold_relative_move()
|
||||||
enew!
|
new
|
||||||
set fdm=indent sw=2 wrap tw=80
|
set fdm=indent sw=2 wrap tw=80
|
||||||
|
|
||||||
let content = [ ' foo', ' bar', ' baz',
|
let longtext = repeat('x', &columns + 1)
|
||||||
\ repeat('x', &columns + 1),
|
let content = [ ' foo', ' ' .. longtext, ' baz',
|
||||||
\ ' foo', ' bar', ' baz'
|
\ longtext,
|
||||||
|
\ ' foo', ' ' .. longtext, ' baz'
|
||||||
\ ]
|
\ ]
|
||||||
call append(0, content)
|
call append(0, content)
|
||||||
|
|
||||||
normal zM
|
normal zM
|
||||||
|
|
||||||
call cursor(3, 1)
|
for lnum in range(1, 3)
|
||||||
call assert_true(foldclosed(line('.')))
|
call cursor(lnum, 1)
|
||||||
normal gj
|
call assert_true(foldclosed(line('.')))
|
||||||
call assert_equal(2, winline())
|
normal gj
|
||||||
|
call assert_equal(2, winline())
|
||||||
|
endfor
|
||||||
|
|
||||||
call cursor(2, 1)
|
call cursor(2, 1)
|
||||||
call assert_true(foldclosed(line('.')))
|
call assert_true(foldclosed(line('.')))
|
||||||
normal 2gj
|
normal 2gj
|
||||||
call assert_equal(3, winline())
|
call assert_equal(3, winline())
|
||||||
|
|
||||||
call cursor(5, 1)
|
for lnum in range(5, 7)
|
||||||
call assert_true(foldclosed(line('.')))
|
call cursor(lnum, 1)
|
||||||
normal gk
|
call assert_true(foldclosed(line('.')))
|
||||||
call assert_equal(3, winline())
|
normal gk
|
||||||
|
call assert_equal(3, winline())
|
||||||
|
endfor
|
||||||
|
|
||||||
call cursor(6, 1)
|
call cursor(6, 1)
|
||||||
call assert_true(foldclosed(line('.')))
|
call assert_true(foldclosed(line('.')))
|
||||||
|
Loading…
Reference in New Issue
Block a user