diff options
author | Shougo <Shougo.Matsu@gmail.com> | 2017-02-23 20:37:46 +0900 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-02-23 12:37:46 +0100 |
commit | 4e21311f9cceabcfaa6c746518cb2628deb2bb40 (patch) | |
tree | 6c31af421589ff9befb78886337f0c4413c40e2f | |
parent | 34e24cb2f7341d34e24e4ccd3e4ed058878ef788 (diff) | |
download | rneovim-4e21311f9cceabcfaa6c746518cb2628deb2bb40.tar.gz rneovim-4e21311f9cceabcfaa6c746518cb2628deb2bb40.tar.bz2 rneovim-4e21311f9cceabcfaa6c746518cb2628deb2bb40.zip |
vim-patch:8.0.0341 (#6151)
Problem: When using complete() and typing a character undo is saved after
the character was inserted. (Shougo)
Solution: Save for undo before inserting the character.
https://github.com/vim/vim/commit/d56a79d3396cf70861b7f739a3c400db91ce7b70
-rw-r--r-- | src/nvim/edit.c | 3 | ||||
-rw-r--r-- | src/nvim/testdir/test_popup.vim | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 9a8ff21263..73d8793a84 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3001,6 +3001,9 @@ static void ins_compl_addleader(int c) { int cc; + if (stop_arrow() == FAIL) { + return; + } if (has_mbyte && (cc = (*mb_char2len)(c)) > 1) { char_u buf[MB_MAXBYTES + 1]; diff --git a/src/nvim/testdir/test_popup.vim b/src/nvim/testdir/test_popup.vim index 50110dd622..edc6336aa7 100644 --- a/src/nvim/testdir/test_popup.vim +++ b/src/nvim/testdir/test_popup.vim @@ -482,4 +482,24 @@ func Test_completion_ctrl_e_without_autowrap() q! endfunc +func CompleteUndo() abort + call complete(1, g:months) + return '' +endfunc + +func Test_completion_can_undo() + inoremap <Right> <c-r>=CompleteUndo()<cr> + set completeopt+=noinsert,noselect + + new + call feedkeys("a\<Right>a\<Esc>", 'xt') + call assert_equal('a', getline(1)) + undo + call assert_equal('', getline(1)) + + bwipe! + set completeopt& + iunmap <Right> +endfunc + " vim: shiftwidth=2 sts=2 expandtab |