Patch 8.0.1250
Problem:    'hlsearch' highlighting not removed after incsearch (lacygoill)
Solution:   Redraw all windows. Start search at the end of the match.  Improve
            how CTRL-G works with incremental search. Add tests. (Christian
            Brabandt, Hirohito Higashi, haya14busa, closes #2267)
Files:      runtime/doc/options.txt, src/ex_getln.c,
            src/testdir/test_search.vim


*** ../vim-8.0.1249/runtime/doc/options.txt     2017-10-29 16:39:36.258313882 
+0100
--- runtime/doc/options.txt     2017-11-02 18:56:51.217676323 +0100
***************
*** 4358,4365 ****
        Example: >
                augroup vimrc-incsearch-highlight
                  autocmd!
!                 autocmd CmdlineEnter [/\?] :set hlsearch
!                 autocmd CmdlineLeave [/\?] :set nohlsearch
                augroup END
  <
        CTRL-L can be used to add one character from after the current match
--- 4454,4461 ----
        Example: >
                augroup vimrc-incsearch-highlight
                  autocmd!
!                 autocmd CmdlineEnter /,\? :set hlsearch
!                 autocmd CmdlineLeave /,\? :set nohlsearch
                augroup END
  <
        CTRL-L can be used to add one character from after the current match
*** ../vim-8.0.1249/src/ex_getln.c      2017-10-29 16:39:36.262313855 +0100
--- src/ex_getln.c      2017-11-02 18:56:51.217676323 +0100
***************
*** 1717,1728 ****
--- 1717,1735 ----
                    pos_T  t;
                    int    search_flags = SEARCH_NOOF;
  
+                   if (ccline.cmdlen == 0)
+                       goto cmdline_not_changed;
+ 
                    save_last_search_pattern();
                    cursor_off();
                    out_flush();
                    if (c == Ctrl_G)
                    {
                        t = match_end;
+                       if (LT_POS(match_start, match_end))
+                           /* start searching at the end of the match
+                            * not at the beginning of the next column */
+                           (void)decl(&t);
                        search_flags += SEARCH_COL;
                    }
                    else
***************
*** 1945,1950 ****
--- 1952,1958 ----
            {
                i = 0;
                SET_NO_HLSEARCH(TRUE); /* turn off previous highlight */
+               redraw_all_later(SOME_VALID);
            }
            else
            {
***************
*** 2082,2088 ****
        curwin->w_botline = old_botline;
        highlight_match = FALSE;
        validate_cursor();      /* needed for TAB */
!       redraw_later(SOME_VALID);
      }
  #endif
  
--- 2090,2096 ----
        curwin->w_botline = old_botline;
        highlight_match = FALSE;
        validate_cursor();      /* needed for TAB */
!       redraw_all_later(SOME_VALID);
      }
  #endif
  
*** ../vim-8.0.1249/src/testdir/test_search.vim 2017-11-02 16:16:23.286239622 
+0100
--- src/testdir/test_search.vim 2017-11-02 18:56:51.217676323 +0100
***************
*** 397,402 ****
--- 397,513 ----
    bw!
  endfunc
  
+ func Test_search_cmdline6()
+   " Test that consecutive matches
+   " are caught by <c-g>/<c-t>
+   if !exists('+incsearch')
+     return
+   endif
+   " need to disable char_avail,
+   " so that expansion of commandline works
+   call test_override("char_avail", 1)
+   new
+   call setline(1, [' bbvimb', ''])
+   set incsearch
+   " first match
+   norm! gg0
+   call feedkeys("/b\<cr>", 'tx')
+   call assert_equal([0,1,2,0], getpos('.'))
+   " second match
+   norm! gg0
+   call feedkeys("/b\<c-g>\<cr>", 'tx')
+   call assert_equal([0,1,3,0], getpos('.'))
+   " third match
+   norm! gg0
+   call feedkeys("/b\<c-g>\<c-g>\<cr>", 'tx')
+   call assert_equal([0,1,7,0], getpos('.'))
+   " first match again
+   norm! gg0
+   call feedkeys("/b\<c-g>\<c-g>\<c-g>\<cr>", 'tx')
+   call assert_equal([0,1,2,0], getpos('.'))
+   set nowrapscan
+   " last match
+   norm! gg0
+   call feedkeys("/b\<c-g>\<c-g>\<c-g>\<cr>", 'tx')
+   call assert_equal([0,1,7,0], getpos('.'))
+   " clean up
+   set wrapscan&vim
+   set noincsearch
+   call test_override("char_avail", 0)
+   bw!
+ endfunc
+ 
+ func Test_search_cmdline7()
+   " Test that an pressing <c-g> in an empty command line
+   " does not move the cursor
+   if !exists('+incsearch')
+     return
+   endif
+   " need to disable char_avail,
+   " so that expansion of commandline works
+   call test_override("char_avail", 1)
+   new
+   let @/='b'
+   call setline(1, [' bbvimb', ''])
+   set incsearch
+   " first match
+   norm! gg0
+   " moves to next match of previous search pattern, just like /<cr>
+   call feedkeys("/\<c-g>\<cr>", 'tx')
+   call assert_equal([0,1,2,0], getpos('.'))
+   " moves to next match of previous search pattern, just like /<cr>
+   call feedkeys("/\<cr>", 'tx')
+   call assert_equal([0,1,3,0], getpos('.'))
+   " moves to next match of previous search pattern, just like /<cr>
+   call feedkeys("/\<c-t>\<cr>", 'tx')
+   call assert_equal([0,1,7,0], getpos('.'))
+   set noincsearch
+   call test_override("char_avail", 0)
+   bw!
+ endfunc
+ 
+ func Test_search_cmdline8()
+   " Highlighting is cleared in all windows
+   " since hls applies to all windows
+   if !exists('+incsearch') || !has('terminal') || has('gui_running') || 
winwidth(0) < 30
+     return
+   endif
+   if has("win32")
+     throw "Skipped: Bug with sending <ESC> to terminal window not fixed yet"
+   endif
+   let h = winheight(0)
+   if h < 3
+     return
+   endif
+   " Prepare buffer text
+   let lines = ['abb vim vim vi', 'vimvivim']
+   call writefile(lines, 'Xsearch.txt')
+   let g:buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 
'Xsearch.txt'], {'term_rows': 3})
+ 
+   call term_wait(g:buf, 200)
+   call assert_equal(lines[0], term_getline(g:buf, 1))
+   call assert_equal(lines[1], term_getline(g:buf, 2))
+ 
+   call term_sendkeys(g:buf, ":set incsearch hlsearch\<cr>")
+   call term_sendkeys(g:buf, ":14vsp\<cr>")
+   call term_sendkeys(g:buf, "/vim\<cr>")
+   call term_sendkeys(g:buf, "/b\<esc>")
+   call term_sendkeys(g:buf, "gg0")
+   call term_wait(g:buf, 500)
+   let screen_line = term_scrape(g:buf, 1)
+   let [a0,a1,a2,a3] = [screen_line[3].attr, screen_line[4].attr,
+         \ screen_line[18].attr, screen_line[19].attr]
+   call assert_notequal(a0, a1)
+   call assert_notequal(a0, a3)
+   call assert_notequal(a1, a2)
+   call assert_equal(a0, a2)
+   call assert_equal(a1, a3)
+   " clean up
+   call delete('Xsearch.txt')
+ 
+   bwipe!
+ endfunc
+ 
  " Tests for regexp with various magic settings
  func Test_search_regexp()
    enew!
***************
*** 566,571 ****
--- 677,683 ----
    let attr_line2 = [a0,a0,a0,a0,a0,a0,a0,a0]
    call assert_equal(attr_line1, map(term_scrape(g:buf, 
1)[:len(attr_line1)-1], 'v:val.attr'))
    call assert_equal(attr_line2, map(term_scrape(g:buf, 
2)[:len(attr_line2)-1], 'v:val.attr'))
+   call delete('Xsearch.txt')
  
    call delete('Xsearch.txt')
    bwipe!
*** ../vim-8.0.1249/src/version.c       2017-11-02 18:19:14.474895412 +0100
--- src/version.c       2017-11-02 19:04:31.614976431 +0100
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     1250,
  /**/

-- 
A special law prohibits unmarried women from parachuting on Sunday or she
shall risk arrest, fine, and/or jailing.
                [real standing law in Florida, United States of America]

 /// Bram Moolenaar -- b...@moolenaar.net -- 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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui