> -----Messaggio originale----- > Da: Benji Fisher [mailto:[EMAIL PROTECTED] > Inviato: giovedì 13 luglio 2006 15.35 > A: vim > Cc: Dan Sharp > Oggetto: Re: matchit doesn't work for php > > 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
Thanks a lot, it works but I also notice that "else if" is not part of the matching, although "else if" is a valid expression in php: It matches if, else, elseif but it doesn't match if, else, else if How can I include "else if" in the matching? Many thanks in advance. Cesar