diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/edit.c | 4 | ||||
| -rw-r--r-- | src/nvim/testdir/test_ins_complete.vim | 22 | 
2 files changed, 26 insertions, 0 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index a9c606ec13..cafc764ddf 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -663,8 +663,12 @@ static int insert_execute(VimState *state, int key)    InsertState *const s = (InsertState *)state;    if (stop_insert_mode) {      // Insert mode ended, possibly from a callback. +    if (key != K_IGNORE && key != K_NOP) { +      vungetc(key); +    }      s->count = 0;      s->nomove = true; +    ins_compl_prep(ESC);      return 0;    } diff --git a/src/nvim/testdir/test_ins_complete.vim b/src/nvim/testdir/test_ins_complete.vim index ce75799551..6803271c03 100644 --- a/src/nvim/testdir/test_ins_complete.vim +++ b/src/nvim/testdir/test_ins_complete.vim @@ -445,6 +445,28 @@ func Test_issue_7021()    set completeslash=  endfunc +func Test_pum_stopped_by_timer() +  CheckScreendump + +  let lines =<< trim END +    call setline(1, ['hello', 'hullo', 'heeee', '']) +    func StartCompl() +      call timer_start(100, { -> execute('stopinsert') }) +      call feedkeys("Gah\<C-N>") +    endfunc +  END + +  call writefile(lines, 'Xpumscript') +  let buf = RunVimInTerminal('-S Xpumscript', #{rows: 12}) +  call term_sendkeys(buf, ":call StartCompl()\<CR>") +  call TermWait(buf, 200) +  call term_sendkeys(buf, "k") +  call VerifyScreenDump(buf, 'Test_pum_stopped_by_timer', {}) + +  call StopVimInTerminal(buf) +  call delete('Xpumscript') +endfunc +  func Test_pum_with_folds_two_tabs()    CheckScreendump  | 
