On Wed, Sep 06, 2006 at 01:20:13AM +0200, A.J.Mechelynck wrote:
> 
> It's supposed to treat ? and : on the one hand, and = and ; on the other 
> hand, as "paired brackets". However, the matchparen plugin uses a rather 
> elementary algorithm to split 'matchpairs' into individual items: any 
> colons and commas are regarded as delimiters, and then odd "parts" are 
> treated as "left brackets", even ones as "right brackets".

     Good catch.  I think the line you are referring to is

  let plist = split(&matchpairs, ':\|,')

in $VIMRUNTIME/plugin/matchparen.vim .

> I see the following possible cures, use only one of them:
> (a) disable matchparen matching
> 
>       :set loaded_matchparen = 1
> 
> (b) remove the questionable pair "?::" from the 'matchpairs' options
> 
> (c) patch plugin/matchparen.vim to refine the splitting algorithm, so 
> that a colon should be treated as either a separator or a "bracket" 
> depending on position within the option.

     Now that the problem has been pointed out, I think the patch should
be made in the official distribution.  How about (simple but oh, so
clever)

  let plist = split(&matchpairs, '.\zs.')

which removes every second character?  Will that have trouble with
multibyte characters?  Are these even allowed in 'matchpairs'?

HTH                                     --Benji Fisher

P.S.  cc'ed to vim-dev for further discussion

Reply via email to