mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
vim-patch:7.4.1961
Problem: When 'insertmode' is reset while doing completion the popup menu
remains even though Vim is in Normal mode.
Solution: Ignore stop_insert_mode when the popup menu is visible. Don't set
stop_insert_mode when 'insertmode' was already off. (Christian
Brabandt)
00672e1d3f
This commit is contained in:
parent
68bcb32ec4
commit
e74c2334f2
@ -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
|
||||||
|
@ -3661,7 +3661,7 @@ set_bool_option (
|
|||||||
if ((State & INSERT) == 0)
|
if ((State & INSERT) == 0)
|
||||||
need_start_insertmode = TRUE;
|
need_start_insertmode = TRUE;
|
||||||
stop_insert_mode = FALSE;
|
stop_insert_mode = FALSE;
|
||||||
} else {
|
} else if (old_value) { // only reset if it was set previously
|
||||||
need_start_insertmode = FALSE;
|
need_start_insertmode = FALSE;
|
||||||
stop_insert_mode = TRUE;
|
stop_insert_mode = TRUE;
|
||||||
if (restart_edit != 0 && mode_displayed)
|
if (restart_edit != 0 && mode_displayed)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user