> -----Messaggio originale----- > Da: Benji Fisher [mailto:[EMAIL PROTECTED] > Inviato: mercoledì 19 luglio 2006 15.17 > A: vim > Oggetto: Re: R: matchit doesn't work for php > > On Fri, Jul 14, 2006 at 04:16:44AM +0200, Cesar Romani wrote: > > > > 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 > > First of all, it is not clear to me that everyone would want to > treat "else if" the same as "elseif". From the PHP manual, > > In PHP, you can also write 'else if' (in two words) and the > behavior would be identical to the one of 'elseif' (in a single > word). The syntactic meaning is slightly different (if you're > familiar with C, this is the same behavior) but the bottom line > is that both would result in exactly the same behavior. > > Personally, I would use "elseif" for something like the example given > there, > > if ($a > $b) { > echo "a is bigger than b"; > } elseif ($a == $b) { > echo "a is equal to b"; > } else { > echo "a is smaller than b"; > } > > but I might write "else if" for something like > > if ($a > $b) { > echo "a is bigger than b"; > } else if ($a == $b) { # This is the complicated case! > # Many lines of code > } else { > echo "a is smaller than b"; > } > > and then I would be annoyed if "else if" were treated the same as "elseif". > > If you still want to treat them the same, then replace 'elseif' in > the > matchit patterns with 'else\s*if'. Then test it: you should get > different > results depending on whether you start with the cursor on the first or > second > word of "else if", and you may like it. If you really want the two cases > treated identically, then you have to make sure that the second part of > "else > if" is not treated as an "if", so replace '\<if' in the matching patterns > with > '\%(\<else\s*\)\@<!\<if' (untested). That should do it. > > if (help for matchit not yet installed) > :help matchit-install > > :help matchit-spaces > > HTH --Benji Fisher
In the following code, "if" from line 2 doesn't match "else" from line 7 -------------------------------- 1 <?php 2 if($a > $b) 3 { 4 echo "a is bigger than b"; 5 if($a=10) $b=5; 6 } 7 else 8 { 9 echo "a is smaller than b"; 10 } 11 ?> -------------------------------- Many thanks in advance. Cesar