# HG changeset patch # User Bram Moolenaar # Date 1651683604 -7200 # Node ID c1591fa6f81a22ab6b494719917248f1a55c7580 # Parent 1d008ef222ea91f9fb0df541ce232d05777776c4 patch 8.2.4865: :startinsert right after :stopinsert may not work Commit: https://github.com/vim/vim/commit/cd5dbad184e8235beb13dcd8a22302da09db9766 Author: zeertzjq Date: Wed May 4 17:51:50 2022 +0100 patch 8.2.4865: :startinsert right after :stopinsert may not work Problem: :startinsert right after :stopinsert does not work when popup menu is still visible. Solution: Use ins_compl_active() instead of pum_visible(). (closes #10352) diff --git a/src/edit.c b/src/edit.c --- a/src/edit.c +++ b/src/edit.c @@ -448,7 +448,7 @@ edit( if (update_Insstart_orig) Insstart_orig = Insstart; - if (stop_insert_mode && !pum_visible()) + if (stop_insert_mode && !ins_compl_active()) { // ":stopinsert" used or 'insertmode' reset count = 0; diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -555,6 +555,15 @@ func Test_pum_stopped_by_timer() call delete('Xpumscript') endfunc +func Test_complete_stopinsert_startinsert() + nnoremap startinsert + inoremap stopinsert + " This just checks if this causes an error + call feedkeys("i\\\\", 'x') + nunmap + iunmap +endfunc + func Test_pum_with_folds_two_tabs() CheckScreendump diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4865, +/**/ 4864, /**/ 4863,