2014-06-17 52 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