> -----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

Reply via email to