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; Insstart_orig = Insstart;
} }
if (stop_insert_mode) { if (stop_insert_mode && !pum_visible()) {
// ":stopinsert" used or 'insertmode' reset // ":stopinsert" used or 'insertmode' reset
s->count = 0; s->count = 0;
return 0; // exit insert mode 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 */ /* when 'insertmode' is set from an autocommand need to do work here */
else if ((int *)varp == &p_im) { else if ((int *)varp == &p_im) {
if (p_im) { if (p_im) {
if ((State & INSERT) == 0) if ((State & INSERT) == 0) {
need_start_insertmode = TRUE; need_start_insertmode = true;
stop_insert_mode = FALSE; }
} else { stop_insert_mode = false;
need_start_insertmode = FALSE; } else if (old_value) { // only reset if it was set previously
stop_insert_mode = TRUE; need_start_insertmode = false;
if (restart_edit != 0 && mode_displayed) stop_insert_mode = true;
clear_cmdline = TRUE; /* remove "(insert)" */ if (restart_edit != 0 && mode_displayed) {
clear_cmdline = true; // remove "(insert)"
}
restart_edit = 0; restart_edit = 0;
} }
} }

View File

@ -28,3 +28,38 @@ func Test_noinsert_complete()
set completeopt-=noinsert set completeopt-=noinsert
iunmap <F5> iunmap <F5>
endfunc 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, // 1964,
// 1963 NA // 1963 NA
// 1962, // 1962,
// 1961, 1961,
1960, 1960,
// 1959 NA // 1959 NA
// 1958 NA // 1958 NA