Patch 8.2.1580
Problem:    Wildmenu does not work properly.
Solution:   Do not call may_do_incsearch_highlighting() if completion is in
            progress.
Files:      src/ex_getln.c, src/testdir/test_cmdline.vim,
            src/testdir/dumps/Test_wildmenu_1.dump,
            src/testdir/dumps/Test_wildmenu_2.dump,
            src/testdir/dumps/Test_wildmenu_3.dump,
            src/testdir/dumps/Test_wildmenu_4.dump


*** ../vim-8.2.1579/src/ex_getln.c      2020-08-20 15:02:38.536534973 +0200
--- src/ex_getln.c      2020-09-03 16:47:38.830056574 +0200
***************
*** 397,403 ****
      // NOTE: must call restore_last_search_pattern() before returning!
      save_last_search_pattern();
  
!     if (!do_incsearch_highlighting(firstc, &search_delim, is_state, &skiplen, 
&patlen))
      {
        restore_last_search_pattern();
        finish_incsearch_highlighting(FALSE, is_state, TRUE);
--- 397,404 ----
      // NOTE: must call restore_last_search_pattern() before returning!
      save_last_search_pattern();
  
!     if (!do_incsearch_highlighting(firstc, &search_delim, is_state,
!                                                           &skiplen, &patlen))
      {
        restore_last_search_pattern();
        finish_incsearch_highlighting(FALSE, is_state, TRUE);
***************
*** 1235,1244 ****
                    if (has_mbyte)
                        j -= (*mb_head_off)(ccline.cmdbuff, ccline.cmdbuff + j);
                    if (vim_ispathsep(ccline.cmdbuff[j])
! #ifdef BACKSLASH_IN_FILENAME
                            && vim_strchr((char_u *)" *?[{`$%#",
                                ccline.cmdbuff[j + 1]) == NULL
! #endif
                       )
                    {
                        if (found)
--- 1236,1245 ----
                    if (has_mbyte)
                        j -= (*mb_head_off)(ccline.cmdbuff, ccline.cmdbuff + j);
                    if (vim_ispathsep(ccline.cmdbuff[j])
! # ifdef BACKSLASH_IN_FILENAME
                            && vim_strchr((char_u *)" *?[{`$%#",
                                ccline.cmdbuff[j + 1]) == NULL
! # endif
                       )
                    {
                        if (found)
***************
*** 1425,1430 ****
--- 1426,1432 ----
        if ((c == p_wc && !gotesc && KeyTyped) || c == p_wcm)
        {
            int options = WILD_NO_BEEP;
+ 
            if (wim_flags[wim_index] & WIM_BUFLASTUSED)
                options |= WILD_BUFLASTUSED;
            if (xpc.xp_numfiles > 0)   // typed p_wc at least twice
***************
*** 1442,1449 ****
                    res = nextwild(&xpc, WILD_LONGEST, options,
                                                               firstc != '@');
                else if (wim_flags[wim_index] & WIM_FULL)
!                   res = nextwild(&xpc, WILD_NEXT, options,
!                                                              firstc != '@');
                else
                    res = OK;       // don't insert 'wildchar' now
            }
--- 1444,1450 ----
                    res = nextwild(&xpc, WILD_LONGEST, options,
                                                               firstc != '@');
                else if (wim_flags[wim_index] & WIM_FULL)
!                   res = nextwild(&xpc, WILD_NEXT, options, firstc != '@');
                else
                    res = OK;       // don't insert 'wildchar' now
            }
***************
*** 1454,1464 ****
                // if 'wildmode' first contains "longest", get longest
                // common part
                if (wim_flags[0] & WIM_LONGEST)
!                   res = nextwild(&xpc, WILD_LONGEST, options,
!                                                              firstc != '@');
                else
                    res = nextwild(&xpc, WILD_EXPAND_KEEP, options,
!                                                              firstc != '@');
  
                // if interrupted while completing, behave like it failed
                if (got_int)
--- 1455,1464 ----
                // if 'wildmode' first contains "longest", get longest
                // common part
                if (wim_flags[0] & WIM_LONGEST)
!                   res = nextwild(&xpc, WILD_LONGEST, options, firstc != '@');
                else
                    res = nextwild(&xpc, WILD_EXPAND_KEEP, options,
!                                                               firstc != '@');
  
                // if interrupted while completing, behave like it failed
                if (got_int)
***************
*** 1483,1489 ****
                        wim_index = 1;
                    if ((wim_flags[wim_index] & WIM_LIST)
  #ifdef FEAT_WILDMENU
!                           || (p_wmnu && (wim_flags[wim_index] & WIM_FULL) != 
0)
  #endif
                            )
                    {
--- 1483,1489 ----
                        wim_index = 1;
                    if ((wim_flags[wim_index] & WIM_LIST)
  #ifdef FEAT_WILDMENU
!                         || (p_wmnu && (wim_flags[wim_index] & WIM_FULL) != 0)
  #endif
                            )
                    {
***************
*** 1511,1518 ****
                            nextwild(&xpc, WILD_LONGEST, options,
                                                               firstc != '@');
                        else if (wim_flags[wim_index] & WIM_FULL)
!                           nextwild(&xpc, WILD_NEXT, options,
!                                                              firstc != '@');
                    }
                    else
                        vim_beep(BO_WILD);
--- 1511,1517 ----
                            nextwild(&xpc, WILD_LONGEST, options,
                                                               firstc != '@');
                        else if (wim_flags[wim_index] & WIM_FULL)
!                           nextwild(&xpc, WILD_NEXT, options, firstc != '@');
                    }
                    else
                        vim_beep(BO_WILD);
***************
*** 2348,2354 ****
        trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
  
  #ifdef FEAT_SEARCH_EXTRA
!       may_do_incsearch_highlighting(firstc, count, &is_state);
  #endif
  
  #ifdef FEAT_RIGHTLEFT
--- 2347,2354 ----
        trigger_cmd_autocmd(cmdline_type, EVENT_CMDLINECHANGED);
  
  #ifdef FEAT_SEARCH_EXTRA
!       if (xpc.xp_context == EXPAND_NOTHING)
!           may_do_incsearch_highlighting(firstc, count, &is_state);
  #endif
  
  #ifdef FEAT_RIGHTLEFT
*** ../vim-8.2.1579/src/testdir/test_cmdline.vim        2020-08-12 
18:50:31.875655822 +0200
--- src/testdir/test_cmdline.vim        2020-09-03 16:45:07.850397438 +0200
***************
*** 84,89 ****
--- 84,117 ----
    call delete('Xdir1', 'd')
    set nowildmenu
  endfunc
+ f
+ func Test_wildmenu_screendump()
+   CheckScreendump
+ 
+   let lines =<< trim [SCRIPT]
+     set wildmenu hlsearch
+   [SCRIPT]
+   call writefile(lines, 'XTest_wildmenu')
+ 
+   let buf = RunVimInTerminal('-S XTest_wildmenu', {'rows': 8})
+   call term_sendkeys(buf, ":vim\<Tab>")
+   call VerifyScreenDump(buf, 'Test_wildmenu_1', {})
+ 
+   call term_sendkeys(buf, "\<Tab>")
+   call VerifyScreenDump(buf, 'Test_wildmenu_2', {})
+ 
+   call term_sendkeys(buf, "\<Tab>")
+   call VerifyScreenDump(buf, 'Test_wildmenu_3', {})
+ 
+   call term_sendkeys(buf, "\<Tab>")
+   call VerifyScreenDump(buf, 'Test_wildmenu_4', {})
+   call term_sendkeys(buf, "\<Esc>")
+ 
+   " clean up
+   call StopVimInTerminal(buf)
+   call delete('XTest_wildmenu')
+ endfunc
+ 
  
  func Test_map_completion()
    CheckFeature cmdline_compl
*** ../vim-8.2.1579/src/testdir/dumps/Test_wildmenu_1.dump      2020-09-03 
16:49:34.757789339 +0200
--- src/testdir/dumps/Test_wildmenu_1.dump      2020-09-03 16:46:09.122260225 
+0200
***************
*** 0 ****
--- 1,8 ----
+ | +0&#ffffff0@74
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |v+0#0000001#ffff4012|i|m|9|s|c|r|i|p|t| +3#0000000#ffffff0@1|v|i|m|g|r|e|p| 
@1|v|i|m|g|r|e|p|a|d@1| @43
+ |:+0&&|v|i|m|9|s|c|r|i|p|t> @63
*** ../vim-8.2.1579/src/testdir/dumps/Test_wildmenu_2.dump      2020-09-03 
16:49:34.761789328 +0200
--- src/testdir/dumps/Test_wildmenu_2.dump      2020-09-03 16:46:10.166257872 
+0200
***************
*** 0 ****
--- 1,8 ----
+ | +0&#ffffff0@74
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v+0#0000001#ffff4012|i|m|g|r|e|p| 
+3#0000000#ffffff0@1|v|i|m|g|r|e|p|a|d@1| @43
+ |:+0&&|v|i|m|g|r|e|p> @66
*** ../vim-8.2.1579/src/testdir/dumps/Test_wildmenu_3.dump      2020-09-03 
16:49:34.765789319 +0200
--- src/testdir/dumps/Test_wildmenu_3.dump      2020-09-03 16:46:11.214255512 
+0200
***************
*** 0 ****
--- 1,8 ----
+ | +0&#ffffff0@74
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| 
@1|v+0#0000001#ffff4012|i|m|g|r|e|p|a|d@1| +3#0000000#ffffff0@43
+ |:+0&&|v|i|m|g|r|e|p|a|d@1> @63
*** ../vim-8.2.1579/src/testdir/dumps/Test_wildmenu_4.dump      2020-09-03 
16:49:34.769789310 +0200
--- src/testdir/dumps/Test_wildmenu_4.dump      2020-09-03 16:46:12.262253149 
+0200
***************
*** 0 ****
--- 1,8 ----
+ | +0&#ffffff0@74
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |~| @73
+ |v+3#0000000&|i|m|9|s|c|r|i|p|t| @1|v|i|m|g|r|e|p| @1|v|i|m|g|r|e|p|a|d@1| @43
+ |:+0&&|v|i|m> @70
*** ../vim-8.2.1579/src/version.c       2020-09-03 16:04:25.972190623 +0200
--- src/version.c       2020-09-03 16:45:47.366309130 +0200
***************
*** 756,757 ****
--- 756,759 ----
  {   /* Add new patch number below this line */
+ /**/
+     1580,
  /**/

-- 
We do not stumble over mountains, but over molehills.
                                Confucius

 /// 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202009031450.083EolV5060858%40masaka.moolenaar.net.

Raspunde prin e-mail lui