From: Bram Moolenaar Date: Sat, 24 Jun 2017 13:39:07 +0000 (+0200) Subject: patch 8.0.0669: CTRL-N at start of the buffer does not work correctly X-Git-Tag: v8.0.0669 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=24a9e348aa88a6c60ae0cdf5c4a777d8c03b08ca;p=vim 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) --- diff --git a/src/edit.c b/src/edit.c index da1b238d8..912f05f38 100644 --- a/src/edit.c +++ b/src/edit.c @@ -4308,9 +4308,17 @@ ins_compl_get_exp(pos_T *ini) { ins_buf = curbuf; first_match_pos = *ini; - /* So that ^N can match word immediately after cursor */ - if (ctrl_x_mode == 0) - dec(&first_match_pos); + /* Move the cursor back one character so that ^N can match the + * word immediately after the cursor. */ + 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; type = 0; diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index 25d766f7b..e3bd0e19a 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -612,5 +612,19 @@ func Test_complete_func_mess() set completefunc= 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\\.\3wdW\q3@a", 'tx') + call assert_equal(expected, getline(1,'$')) + bwipe! +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index eda74a207..d1c6119a1 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 669, /**/ 668, /**/