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