2014-06-17 49 views
1

在我們的實驗室中我們有一種新語言,我們在emacs中提供語法突出顯示等內容,但目前對於崇高文本沒有任何內容。在崇高文本中創建一種新語言

我不想創建語法高亮顯示這種語言,但我想下面的事情:

  1. 語言類似於哈斯克爾---因此,它基本上讀取Haskell語法高亮(但是錯了,現在還沒有關注)。這可以通過在Haskell.sublime設置中爲這種新語言設置擴展來完成。但是 - >
  2. 我需要這個新的語言已經tab_size設置爲4,而Haskell的,它是2

我不確定如何在崇高的文本3

回答

1

如果你的語法做到這一點建立在或擴展哈斯克爾,我會通過導入Haskell語法規則

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>fileTypes</key> 
    <array> 
     <string>my-extension</string> 
    </array> 
    <key>name</key> 
    <string>My Language</string> 
    <key>patterns</key> 
    <array> 
     <dict> 
      <key>include</key> 
      <string>source.haskell</string> 
     </dict> 
     <!-- custom syntax here --> 
    </array> 
    <key>scopeName</key> 
    <string>source.haskell.myExt</string> 
    <key>uuid</key> 
    <string></string> 
</dict> 
</plist> 

然後就可以開始添加自定義的語法或覆蓋Haswell的默認值,如啓動

<dict> 
    <key>match</key> 
    <string>(\b|^\s*)(?i)(list|of|my|keywords)\b</string> 
    <key>name</key> 
    <string>keyword.command.myExt</string> 
</dict> 

<dict> 
    <key>match</key> 
    <string>\b(true|on)\b</string> 
    <key>name</key> 
    <string>constant.boolean.true.myExt</string> 
</dict> 

<dict> 
    <key>match</key> 
    <string>\b(false|off)\b</string> 
    <key>name</key> 
    <string>constant.boolean.false.myExt</string> 
</dict> 

<dict> 
    <key>match</key> 
    <string>\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b</string> 
    <key>name</key> 
    <string>constants.nummeric.myExt</string> 
</dict> 

我推薦一下創建自定義之前Haskell.tmLanguage,看看它的結構和命名方案。

我不確定製表符是否在語言定義中定義。我可以想象你可以在你的語法設置中控制這個,儘管這些也可能適用於導入的Haskell。

{ 
    "tab_size": 4, 
    "translate_tabs_to_spaces": false 
} 

也讓我指出標記這個問題textmate時,你可能會得到更好的響應,爲崇高的文本使用TextMate的.tmLanguage文件的語法定義。

+0

This Works;謝謝! :) – p0lAris