On Thu, Jul 13, 2006 at 06:42:43AM +0200, Cesar Romani wrote:
>  
> In the following function the bracket at 3 doesn't match the bracket at 17
> And the bracket at 5 doesn't match the bracket at 8
> 
>  1 <?php
>  2   function test1($a,$b,$c,$d,$e,$f)
>  3   {
>  4     if($e=='hola')
>  5     {
>  6       if($f=='') $f='1000'; 
>  7       $s='{'.$d.':'.$f.'}amigo'; 
>  8     }
>  9     else
> 10     {
> 11       $s='{'.$d.':'.$f.'}amiga'; 
> 12     }
> 13     $this->s=$s;
> 14     $this->a=$a;
> 15     $this->b=$b;
> 16     $this->c=$c;
> 17   }
> 18 ?>
> 
> Many thanks in advance.
> 
> Cesar

     The problem is that "{" is included in the 'matchpairs' option but
not in b:match_words.  The matchit script recognizes that "{" is a
matching character, but does not have a rule for it, so it defaults to
the built-in % matching behavior.  You can confirm this with

:normal! %

     The solution is to add '{:}' to b:match_words ; probably also '(:)'
and '[:]' while you are at it.  Also, I notice that ftplugin/php.vim
:source's ftplugin/html.vim and so inherits the HTML setting of
b:match_skip .  I think that PHP would do better with the default skip
behavior, so it should :unlet this variable.

     I am cc'ing the maintainer of ftplugin/php.vim .

HTH                                     --Benji Fisher

Reply via email to