Hi Bram!

On Mi, 13 Aug 2014, Bram Moolenaar wrote:

> 
> Christian Brabandt wrote:
> 
> > > > On Sa, 09 Aug 2014, Bram Moolenaar wrote:
> > > > > David Barnett wrote:
> > > > > 
> > > > > > Looks like it's 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
> > > > > > 
> > > > > > 
> > > > > > It's a very small change but apparently problematic. Can it be 
> > > > > > reverted or
> > > > > > rethought?
> > > > > 
> > > > > I'm glad you could pinpoint it.  I assumed that when the condition
> > > > > evaluates to true the match information would be updated.  But perhaps
> > > > > that doesn't happen in this case and it searches for a match every 
> > > > > time.
> > > > > 
> > > > > Needs some debugging to figure out what happens.  What matches does 
> > > > > this
> > > > > plugin add when it's slow?
> > > > 
> > > > Perhaps it is better to revert that patch and make sure, highlighting 
> > > > gets only applied, if there is a match at the actual position?
> > > > 
> > > > diff --git a/src/screen.c b/src/screen.c
> > [...]
> > > 
> > > I haven't tried it, but it looks like this only avoids highlighting
> > > positions after the endcol when "v" and shl->endcol aren't exactly the
> > > same (which can happen for multi-byte characters), but it doesn't update
> > > the state, thus a next match might be missed.
> > 
> > Yes, that is what patch 7.3.362 tried to fix, isn't it?
> 
> So your patch doesn't work.  Try this:
> 
>       highlight MyGroup ctermbg=green guibg=green
>       let m = matchaddpos("MyGroup", [[4, 24, 2], [4, 30, 2]])
> 
>       " asdfasdfasdfasdfasdfas℅fasdfasdfasdfasdf
> 
> Before pach 362 it would highlight everything from column 24.
> After the fix it looks OK, but we get complaints about slowness.
> After your fix only the first match shows up.

I don't see that here (screenshot attached)

But anyway, this raises the question again, why matchaddpos() accepts a 
list of positions (but only 8 items), while all other functions usually 
only accept 1 position.

Best,
Christian
-- 
Ein Abend, an dem sich alle Anwesenden völlig einig sind, ist ein
verlorener Abend.
                -- Albert Einstein

-- 
-- 
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to