TextMate özel dizim yapımında sorun.

1 Cevap php

I TextMate özel bir dili vurgulamak için çalışıyorum. Ancak, aşağıdaki tanım PHP girmeler vurgulayın (benim * yılan dosyalar için seçerim.) Değildir:

{ scopeName = 'source.serpent';
 fileTypes = ( 'serpent' );
 patterns = (
  { begin = '<\?';
   end = '\?>';
   patterns = ( { include = 'source.php'; } );
  },
 );
}

PHP dili seçerseniz, PHP parçaları vurgulanır.

Bunun nedeni ne olabilir? Işe gerekir?

Ben de <%%> sınırlayıcı ile yakut eklemeleri düşündüğünü, ancak bu basit kurulumu ile çalışmıyor.


Update

Görünüşe göre, sadece PHP bir konudur. Aşağıdaki dil tanımı benim metin Ruby ve Serpent dilleri vurgular, ancak PHP eklemeleri! Burada ne yanlış?

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=)?';
            end = '\?>';
            patterns = ( { include = 'source.php'; } );
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}

Ben desen içerisinde dil ile source.php değiştirerek ve PHP dilden depo kopyalayarak bu çalışma yaptık.

1 Cevap

On Fri, Jul 9, 2010 at 08:02, Allan Odgaard wrote:

We made the PHP grammar itself match the construct, so with your grammar, those bits have been consumed by the including grammar, and the included PHP grammar will therefor be a no-op.

The reason we made it this way was so that the PHP grammar can sort of work when used as the root grammar, since lots of users insist on using it that way, despite our efforts¹ to educate ;)

¹ http://wiki.macromates.com/Troubleshooting/PHPSyntaxHighlight

Allah'ın yardımıyla, ben hatamı anladım ve bir çalışma (en azından vurgulama!) Tanım yapmak mümkün:

{   scopeName = 'source.phpruby.serpent';
    fileTypes = ( 'serpent', 'serpent.php', 'serpent.erb' );
    patterns = (
        {   begin = '<\?(php|=|)';
            end = '\?>';
            include = 'source.php';
        },
        {   begin = '<%';
            end = '%>';
            patterns = ( { include = 'source.ruby'; } );
        },
        {   include = 'source.serpent'; },
    );
}