2010-06-03 108 views
0

我想在TextMate中突出顯示自定義語言。但是,下面的定義並不突出PHP插入(我選擇它爲我的* .serpent文件):無法在TextMate中自定義語法高亮工作

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

如果我選擇PHP語言,那麼PHP部分高亮顯示。

可能是什麼原因?它應該工作嗎?

我也在考慮使用分隔符的紅寶石插入,但它不適用於最簡單的設置。


更新

顯然,這僅僅是PHP的問題。以下語言定義突出顯示了我的文本中的Ruby和Serpent語言,但未插入PHP!這裏有什麼問題?

{ 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'; }, 
    ); 
} 

我已與我的模式#language更換source.php並通過複製PHP語言庫工作。

回答

0

在週五,2010年7月9日在08:02,艾倫 Odgaard 寫道:

我們所做的PHP語法本身匹配 的結構,所以你 語法,這些位有被包括語法消耗 ,並且包括PHP語法的 將因此是 無操作。

我們把它之所以這樣是如此 ,作爲根語法使用時,PHP語法可以排序工作 的,因爲 很多用戶堅持使用它是 方式,儘管我們efforts¹教育 ; )

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

有了上帝的幫助,我明白了我的錯誤,並能夠使一個工作(至少高亮顯示)定義:

{ 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'; }, 
    ); 
} 
+0

有一段時間沒有工作代碼,但後來它被修復了。 – Andrei 2010-07-09 18:27:53