0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.0.0669: CTRL-N at start of the buffer does not work correctly

Problem:    In Insert mode, CTRL-N at start of the buffer does not work
            correctly. (zuloloxi)
Solution:   Wrap around the start of the buffer. (Christian Brabandt)
This commit is contained in:
Bram Moolenaar
2017-06-24 15:39:07 +02:00
parent a1bd86e0f2
commit 24a9e348aa
3 changed files with 27 additions and 3 deletions

View File

@@ -4308,9 +4308,17 @@ ins_compl_get_exp(pos_T *ini)
{ {
ins_buf = curbuf; ins_buf = curbuf;
first_match_pos = *ini; first_match_pos = *ini;
/* So that ^N can match word immediately after cursor */ /* Move the cursor back one character so that ^N can match the
if (ctrl_x_mode == 0) * word immediately after the cursor. */
dec(&first_match_pos); if (ctrl_x_mode == 0 && dec(&first_match_pos) < 0)
{
/* Move the cursor to after the last character in the
* buffer, so that word at start of buffer is found
* correctly. */
first_match_pos.lnum = ins_buf->b_ml.ml_line_count;
first_match_pos.col =
(colnr_T)STRLEN(ml_get(first_match_pos.lnum));
}
last_match_pos = first_match_pos; last_match_pos = first_match_pos;
type = 0; type = 0;

View File

@@ -612,5 +612,19 @@ func Test_complete_func_mess()
set completefunc= set completefunc=
endfunc endfunc
func Test_complete_CTRLN_startofbuffer()
new
call setline(1, [ 'organize(cupboard, 3, 2);',
\ 'prioritize(bureau, 8, 7);',
\ 'realize(bannister, 4, 4);',
\ 'moralize(railing, 3,9);'])
let expected=['cupboard.organize(3, 2);',
\ 'bureau.prioritize(8, 7);',
\ 'bannister.realize(4, 4);',
\ 'railing.moralize(3,9);']
call feedkeys("qai\<c-n>\<c-n>.\<esc>3wdW\<cr>q3@a", 'tx')
call assert_equal(expected, getline(1,'$'))
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
669,
/**/ /**/
668, 668,
/**/ /**/