aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/edit.c2
-rw-r--r--src/nvim/option.c2
-rw-r--r--src/nvim/testdir/test_popup.vim35
-rw-r--r--src/nvim/version.c2
4 files changed, 38 insertions, 3 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index 18d5ea533d..ca5b6f02ce 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -502,7 +502,7 @@ static int insert_check(VimState *state)
Insstart_orig = Insstart;
}
- if (stop_insert_mode) {
+ if (stop_insert_mode && !pum_visible()) {
// ":stopinsert" used or 'insertmode' reset
s->count = 0;
return 0; // exit insert mode
diff --git a/src/nvim/option.c b/src/nvim/option.c
index d8908cca90..2ec8038731 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -3661,7 +3661,7 @@ set_bool_option (
if ((State & INSERT) == 0)
need_start_insertmode = TRUE;
stop_insert_mode = FALSE;
- } else {
+ } else if (old_value) { // only reset if it was set previously
need_start_insertmode = FALSE;
stop_insert_mode = TRUE;
if (restart_edit != 0 && mode_displayed)
diff --git a/src/nvim/testdir/test_popup.vim b/src/nvim/testdir/test_popup.vim
index 78fc81e3d2..63be8bf609 100644
--- a/src/nvim/testdir/test_popup.vim
+++ b/src/nvim/testdir/test_popup.vim
@@ -28,3 +28,38 @@ func Test_noinsert_complete()
set completeopt-=noinsert
iunmap <F5>
endfunc
+
+let g:months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
+let g:setting = ''
+
+func ListMonths()
+ if g:setting != ''
+ exe ":set" g:setting
+ endif
+ call complete(col('.'), g:months)
+ return ''
+endfunc
+
+func! Test_popup_completion_insertmode()
+ inoremap <F5> <C-R>=ListMonths()<CR>
+ new
+ call feedkeys("a\<F5>\<down>\<enter>\<esc>", 'tx')
+ call assert_equal('February', getline(1))
+ %d
+ let g:setting = 'noinsertmode'
+ call feedkeys("a\<F5>\<down>\<enter>\<esc>", 'tx')
+ call assert_equal('February', getline(1))
+ call assert_false(pumvisible())
+ %d
+ let g:setting = ''
+ call feedkeys("a\<F5>". repeat("\<c-n>",12)."\<enter>\<esc>", 'tx')
+ call assert_equal('', getline(1))
+ %d
+ call feedkeys("a\<F5>\<c-p>\<enter>\<esc>", 'tx')
+ call assert_equal('', getline(1))
+ %d
+ call feedkeys("a\<F5>\<c-p>\<c-p>\<enter>\<esc>", 'tx')
+ call assert_equal('December', getline(1))
+ bwipe!
+ iunmap <F5>
+endfunc
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 685a2a843b..3eb057e7c7 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -480,7 +480,7 @@ static int included_patches[] = {
// 1964,
// 1963 NA
// 1962,
- // 1961,
+ 1961,
1960,
// 1959 NA
// 1958 NA