On Sat, Aug 16, 2014 at 1:08 AM, h_east <h.east....@gmail.com> wrote:

> Bram,
>
> 2014/7/10(Thu) 3:21:03 UTC+9 Bram Moolenaar:
> > Patch 7.4.362
> >
> > Problem:    When matchaddpos() uses a length smaller than the number of
> bytes
> >
> >           in the (last) character the highlight continues until the end
> of
> >
> >           the line.
> >
> > Solution:   Change condition from equal to larger-or-equal.
> >
> > Files:            src/screen.c
> >
> >
> >
> >
> >
> > *** ../vim-7.4.361/src/screen.c       2014-07-03 22:54:04.911859458 +0200
> >
> > --- src/screen.c      2014-07-09 20:14:46.611627298 +0200
> >
> > ***************
> >
> > *** 3852,3858 ****
> >
> >                       {
> >
> >                           shl->attr_cur = shl->attr;
> >
> >                       }
> >
> > !                     else if (v == (long)shl->endcol)
> >
> >                       {
> >
> >                           shl->attr_cur = 0;
> >
> >                           next_search_hl(wp, shl, lnum, (colnr_T)v, cur);
> >
> > --- 3852,3858 ----
> >
> >                       {
> >
> >                           shl->attr_cur = shl->attr;
> >
> >                       }
> >
> > !                     else if (v >= (long)shl->endcol)
> >
> >                       {
> >
> >                           shl->attr_cur = 0;
> >
> >                           next_search_hl(wp, shl, lnum, (colnr_T)v, cur);
> >
> > *** ../vim-7.4.361/src/version.c      2014-07-09 19:58:21.115647328 +0200
> >
> > --- src/version.c     2014-07-09 20:20:14.423620635 +0200
> >
> > ***************
> >
> > *** 736,737 ****
> >
> > --- 736,739 ----
> >
> >   {   /* Add new patch number below this line */
> >
> > + /**/
> >
> > +     362,
> >
> >   /**/
>
> After patch 7.4.362, Processing time is slow under certain conditions.
>
> That condition is 'set hlsearch' and 'set cursorline'.
>
> I've prepared a script file(test603.vim) for verification.
> "====================================================
> function! T()
>     call cursor(1, 1)
>     let t = reltime()
>     for l in range(1, line('$'))
>         call cursor(l, 1)
>         redraw
>     endfor
>     echo reltimestr(reltime(t))
> endfunction
>
> function! S()
>     let s = []
>     for l in range(1, line('$'))
>         let s += ['\%' . l . 'l\%(abcde\)']
>     endfor
>     let @/ = join(s, '\|')
> endfunction
>
> :set hlsearch
> :set cursorline
> :call setline(1, repeat(['abcdef'], 100))
> :call S()
> :call T()
> "====================================================
>
> Exec below.
> $ vim -N -u test603.vim
>
> Exec result:
> Vim Ver.  Elasped time
> 7.4.131   0.045500
> 7.4.361   0.046550
> 7.4.362   1.136427   <-- It is 25 times slower.
> 7.4.398   1.135489
>
> I think patch 7.4.362 is not enough multi-byte support.
>
> I wrote a patch.
> Vim 7.4.404 with my patch elapsed time is 0.053999!
> Please check this.
>

It doesn't work when highlighting multiple characters.

$ vim -u NONE
:set encoding=utf-8
:call setline(1, 'aƔaaa')
:hi Test guibg=red ctermbg=red
:call matchaddpos('Test', [[1, 1, 2]])

-- 
Yukihiro Nakadaira - yukihiro.nakada...@gmail.com

-- 
-- 
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