如何将 TM4E (TextMate) 连接到 eclipse?

how connect TM4E (TextMate) to eclipse?

提问人:Nikolai 提问时间:6/13/2023 更新时间:7/6/2023 访问量:102

问:

我想在我的eclipse插件中添加一些正则表达式突出显示语法的可能性。我了解到可以通过 eclipse 的 TM4E 实现。在哪里可以找到有关连接到 eclipse 的文档或教程?

Eclipse TM4E™ - Eclipse IDE 中的 TextMate 支持

我在任何地方寻找文档和教程,但没有给出结果。

eclipse-plugin IDE 文本伴侣

评论


答:

2赞 mami 6/21/2023 #1

首先,确保将 tm4 添加为项目的依赖项(编辑插件.xml依赖项)。

然后注册要突出显示的内容类型。将此添加到您的插件 .xml 中(该示例适用于 .asm 文件):

<extension
     point="org.eclipse.core.contenttype.contentTypes">
  <content-type
        priority="normal"
        id="tm4.asm"
        name="Assembly file"
        base-type="org.eclipse.core.runtime.text"
        file-extensions="asm">
  </content-type>
</extension>

然后添加 TextMate 语法。确保 scopeNameContentTypeBinding 内容类型 id 与内容类型的 id 匹配,并且作用域名称与语法的作用域名称匹配:

  <extension
     point="org.eclipse.tm4e.registry.grammars">
  <grammar
        path="/src/syntaxes/asm.tmLanguage.json"
        scopeName="source.asm">
  </grammar>
  <scopeNameContentTypeBinding
        contentTypeId="tm4.asm"
        scopeName="source.asm">
  </scopeNameContentTypeBinding>
</extension>

最后,将 TextMate 语法复制到正确的位置,在本例中为

/src/syntax/asm.tmLanguage.json

更新:

还要在语法中设置范围名称。同样,scopeName 应与 tm4e 扩展点中指定的名称匹配:

{
    "scopeName": "source.asm",
    "name": "ASM",
    "fileTypes": [
       "asm"
    ],
    ....
}

评论

0赞 Nikolai 7/3/2023
我已经按照你说的做了所有的事情。我创建了最简单的文本伴侣语法示例 [来源:pastebin.com/E8AzdWKd],并尝试通过这些代码行 [pastebin.com/n9QmbQbj] 在插件中连接此语法.xml。但是当我尝试启动我的插件时,我得到了 tm4e 的异常,例如 [没有为 <source.test> 提供语法]。我test.tmLanguage.json放在 src/syntax 中,我什至在二进制构建和源代码构建中添加了 src。它没有帮助。也许我做错了什么?我的build.properties看起来像[pastebin.com/8DquR8Ty]
0赞 mami 7/6/2023
我已经更新了我的答案,希望对您有所帮助。