Merge pull request #5261 from jbradaric/vim-7.4.1961

vim-patch:7.4.1961
This commit is contained in:
James McCoy 2016-09-27 11:16:57 -04:00 committed by GitHub
commit 36ffb6a7d8
4 changed files with 47 additions and 10 deletions

View File

@ -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

View File

@ -3658,14 +3658,16 @@ set_bool_option (
/* when 'insertmode' is set from an autocommand need to do work here */
else if ((int *)varp == &p_im) {
if (p_im) {
if ((State & INSERT) == 0)
need_start_insertmode = TRUE;
stop_insert_mode = FALSE;
} else {
need_start_insertmode = FALSE;
stop_insert_mode = TRUE;
if (restart_edit != 0 && mode_displayed)
clear_cmdline = TRUE; /* remove "(insert)" */
if ((State & INSERT) == 0) {
need_start_insertmode = true;
}
stop_insert_mode = false;
} 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) {
clear_cmdline = true; // remove "(insert)"
}
restart_edit = 0;
}
}

View File

@ -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

View File

@ -480,7 +480,7 @@ static int included_patches[] = {
// 1964,
// 1963 NA
// 1962,
// 1961,
1961,
1960,
// 1959 NA
// 1958 NA