patch 9.0.1582: :stopinsert may not work in a popup close handler
Problem: :stopinsert may not work in a popup close handler. (Ben Jackson)
Solution: Restore stop_insert_mode when appropriate. (closes #12452,
closes #12434)
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index bc180fc..79c1692 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -6404,5 +6404,28 @@
call setqflist([], 'f')
endfunc
+" Test that setqflist() should not prevent :stopinsert from working
+func Test_setqflist_stopinsert()
+ new
+ call setqflist([], 'f')
+ copen
+ cclose
+ func StopInsert()
+ stopinsert
+ call setqflist([{'text': 'foo'}])
+ return ''
+ endfunc
+
+ call setline(1, 'abc')
+ call cursor(1, 1)
+ call feedkeys("i\<C-R>=StopInsert()\<CR>$", 'tnix')
+ call assert_equal('foo', getqflist()[0].text)
+ call assert_equal([0, 1, 3, 0, v:maxcol], getcurpos())
+ call assert_equal(['abc'], getline(1, '$'))
+
+ delfunc StopInsert
+ call setqflist([], 'f')
+ bwipe!
+endfunc
" vim: shiftwidth=2 sts=2 expandtab