To: vim_dev@googlegroups.com Subject: Patch 8.0.0043 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0043 (after 8.0.0041) Problem: When using Insert mode completion with 'completeopt' containing "noinsert" with CTRL-N the change is not saved for undo. (Tommy Allen) Solution: Call stop_arrow() before inserting for any key. Files: src/edit.c, src/testdir/test_popup.vim *** ../vim-8.0.0042/src/edit.c 2016-10-17 20:46:59.342729937 +0200 --- src/edit.c 2016-10-18 12:51:59.119990870 +0200 *************** *** 4634,4647 **** static void ins_compl_delete(void) { ! int i; /* * In insert mode: Delete the typed part. * In replace mode: Put the old characters back, if any. */ ! i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0); ! backspace_until_column(i); /* TODO: is this sufficient for redrawing? Redrawing everything causes * flicker, thus we can't do that. */ --- 4634,4652 ---- static void ins_compl_delete(void) { ! int col; /* * In insert mode: Delete the typed part. * In replace mode: Put the old characters back, if any. */ ! col = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0); ! if ((int)curwin->w_cursor.col > col) ! { ! if (stop_arrow() == FAIL) ! return; ! backspace_until_column(col); ! } /* TODO: is this sufficient for redrawing? Redrawing everything causes * flicker, thus we can't do that. */ *************** *** 5059,5066 **** --- 5064,5074 ---- colnr_T curs_col; /* cursor column */ int n; int save_w_wrow; + int insert_match; compl_direction = ins_compl_key2dir(c); + insert_match = ins_compl_use_match(c); + if (!compl_started) { /* First time we hit ^N or ^P (in a row, I mean) */ *************** *** 5486,5491 **** --- 5494,5501 ---- edit_submode_extra = NULL; out_flush(); } + else if (insert_match && stop_arrow() == FAIL) + return FAIL; compl_shown_match = compl_curr_match; compl_shows_dir = compl_direction; *************** *** 5494,5501 **** * Find next match (and following matches). */ save_w_wrow = curwin->w_wrow; ! n = ins_compl_next(TRUE, ins_compl_key2count(c), ! ins_compl_use_match(c), FALSE); /* may undisplay the popup menu */ ins_compl_upd_pum(); --- 5504,5510 ---- * Find next match (and following matches). */ save_w_wrow = curwin->w_wrow; ! n = ins_compl_next(TRUE, ins_compl_key2count(c), insert_match, FALSE); /* may undisplay the popup menu */ ins_compl_upd_pum(); *** ../vim-8.0.0042/src/testdir/test_popup.vim 2016-10-17 20:46:59.342729937 +0200 --- src/testdir/test_popup.vim 2016-10-18 12:31:27.581067689 +0200 *************** *** 427,432 **** --- 427,437 ---- call feedkeys("u", 'xt') call assert_equal('bbb', getline(2)) + call feedkeys("A\\\", 'xt') + call assert_equal('January', getline(2)) + call feedkeys("u", 'xt') + call assert_equal('bbb', getline(2)) + iunmap set completeopt& q! *** ../vim-8.0.0042/src/version.c 2016-10-17 20:46:59.342729937 +0200 --- src/version.c 2016-10-18 13:01:18.947864767 +0200 *************** *** 766,767 **** --- 766,769 ---- { /* Add new patch number below this line */ + /**/ + 43, /**/ -- A parent can be arrested if his child cannot hold back a burp during a church service. [real standing law in Nebraska, United States of America] /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///