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)
Files:      src/edit.c, src/option.c, src/Makefile, src/testdir/test_alot.vim,
            src/testdir/test_popup.vim


*** ../vim-7.4.1960/src/edit.c  2016-06-12 21:18:38.203260733 +0200
--- src/edit.c  2016-06-26 18:06:21.432577825 +0200
***************
*** 649,655 ****
        if (update_Insstart_orig)
            Insstart_orig = Insstart;
  
!       if (stop_insert_mode)
        {
            /* ":stopinsert" used or 'insertmode' reset */
            count = 0;
--- 649,659 ----
        if (update_Insstart_orig)
            Insstart_orig = Insstart;
  
!       if (stop_insert_mode
! #ifdef FEAT_INS_EXPAND
!               && !pum_visible()
! #endif
!               )
        {
            /* ":stopinsert" used or 'insertmode' reset */
            count = 0;
*** ../vim-7.4.1960/src/option.c        2016-06-04 20:25:01.181991001 +0200
--- src/option.c        2016-06-26 18:09:53.872804547 +0200
***************
*** 8001,8007 ****
                need_start_insertmode = TRUE;
            stop_insert_mode = FALSE;
        }
!       else
        {
            need_start_insertmode = FALSE;
            stop_insert_mode = TRUE;
--- 8001,8008 ----
                need_start_insertmode = TRUE;
            stop_insert_mode = FALSE;
        }
!       /* only reset if it was set previously */
!       else if (old_value)
        {
            need_start_insertmode = FALSE;
            stop_insert_mode = TRUE;
*** ../vim-7.4.1960/src/Makefile        2016-06-26 16:24:01.285129401 +0200
--- src/Makefile        2016-06-26 17:57:49.725666274 +0200
***************
*** 2045,2050 ****
--- 2045,2051 ----
        test_packadd \
        test_partial \
        test_perl \
+       test_popup \
        test_quickfix \
        test_regexp_latin \
        test_regexp_utf8 \
*** ../vim-7.4.1960/src/testdir/test_alot.vim   2016-05-24 11:31:10.523505120 
+0200
--- src/testdir/test_alot.vim   2016-06-26 17:56:46.578787799 +0200
***************
*** 21,26 ****
--- 21,27 ----
  source test_menu.vim
  source test_messages.vim
  source test_partial.vim
+ source test_popup.vim
  source test_reltime.vim
  source test_searchpos.vim
  source test_set.vim
*** ../vim-7.4.1960/src/testdir/test_popup.vim  2016-06-26 18:36:24.892543964 
+0200
--- src/testdir/test_popup.vim  2016-06-26 18:31:32.961729560 +0200
***************
*** 0 ****
--- 1,35 ----
+ " Test for completion menu
+ 
+ inoremap <F5> <C-R>=ListMonths()<CR>
+ 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()
+     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!
+ endfunc
*** ../vim-7.4.1960/src/version.c       2016-06-26 17:53:02.814756926 +0200
--- src/version.c       2016-06-26 18:36:07.992844156 +0200
***************
*** 755,756 ****
--- 755,758 ----
  {   /* Add new patch number below this line */
+ /**/
+     1961,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
137. You decide to stay in college for an additional year or two,
     just so you can have the free Internet access.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui