Merge pull request #8979 from janlazo/vim-8.1.0174

This commit is contained in:
Justin M. Keyes 2018-09-11 08:26:24 +02:00 committed by GitHub
commit 77628d90a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 17 deletions

View File

@ -16,7 +16,6 @@
#include <inttypes.h>
#include <stdbool.h>
#include "nvim/vim.h"
#include "nvim/ascii.h"
#include "nvim/move.h"
#include "nvim/charset.h"
@ -1726,7 +1725,7 @@ void cursor_correct(void)
*
* return FAIL for failure, OK otherwise
*/
int onepage(int dir, long count)
int onepage(Direction dir, long count)
{
long n;
int retval = OK;
@ -1884,16 +1883,18 @@ int onepage(int dir, long count)
}
curwin->w_valid &= ~(VALID_WCOL|VALID_WROW|VALID_VIRTCOL);
/*
* Avoid the screen jumping up and down when 'scrolloff' is non-zero.
* But make sure we scroll at least one line (happens with mix of long
* wrapping lines and non-wrapping line).
*/
if (retval == OK && dir == FORWARD && check_top_offset()) {
scroll_cursor_top(1, false);
if (curwin->w_topline <= old_topline
&& old_topline < curbuf->b_ml.ml_line_count) {
curwin->w_topline = old_topline + 1;
if (retval == OK && dir == FORWARD) {
// Avoid the screen jumping up and down when 'scrolloff' is non-zero.
// But make sure we scroll at least one line (happens with mix of long
// wrapping lines and non-wrapping line).
if (check_top_offset()) {
scroll_cursor_top(1, false);
if (curwin->w_topline <= old_topline
&& old_topline < curbuf->b_ml.ml_line_count) {
curwin->w_topline = old_topline + 1;
(void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
}
} else if (curwin->w_botline > curbuf->b_ml.ml_line_count) {
(void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
}
}
@ -2166,9 +2167,7 @@ void do_check_cursorbind(void)
restart_edit = restart_edit_save;
}
// Correct cursor for multi-byte character.
if (has_mbyte) {
mb_adjust_cursor();
}
mb_adjust_cursor();
redraw_later(VALID);
// Only scroll when 'scrollbind' hasn't done this.

View File

@ -2,8 +2,7 @@
#define NVIM_MOVE_H
#include <stdbool.h>
#include "nvim/buffer_defs.h"
#include "nvim/pos.h"
#include "nvim/vim.h"
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "move.h.generated.h"

View File

@ -1,5 +1,7 @@
" Test for folding
source view_util.vim
func PrepIndent(arg)
return [a:arg] + repeat(["\t".a:arg], 5)
endfu
@ -648,3 +650,27 @@ func Test_foldtext_recursive()
call assert_equal(3, foldclosedend(2))
bwipe!
endfunc
func Test_fold_last_line_with_pagedown()
enew!
set fdm=manual
let expect = '+-- 11 lines: 9---'
let content = range(1,19)
call append(0, content)
normal dd9G
normal zfG
normal zt
call assert_equal('9', getline(foldclosed('.')))
call assert_equal('19', getline(foldclosedend('.')))
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-B>\<C-F>\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
set fdm&
enew!
endfunc