【问题标题】:Eclipse plug-in: Create a new file extension for a language not supported by EclipseEclipse 插件:为 Eclipse 不支持的语言创建新的文件扩展名
【发布时间】:2010-10-01 11:04:19
【问题描述】:

我正在为其创建一个 Eclipse 插件以支持一种新语言。我遇到的问题是内容类型/文件关联及其各自的编辑器。

该语言没有 Java 或 XML 基础,假设它的扩展名为 '.xyz'

根据我对在线研究的了解,我需要创建一个文件扩展名为“.xyz”的新内容类型。但是我在网上找到的所有信息都与将新扩展名与 java 相关联(用于 java 语法突出显示)或创建可以是 XML 变体的新文件类型有关,因此有很多关于描述器的详细信息。 基本上,我对内容描述器感到困惑,我是否也要为新语言创建一个新的描述器?对于与 XML 或 JAVA 完全无关的语言,我会给出什么基本类型?

另外,由于我将添加自己的语法突出显示,我是否需要创建自己的编辑器,或者我可以在预设的 editorArea(编辑器)中打开这样的文件。

我正在查看的内容类型包是org.eclipse.core.contenttype.contentTypes

【问题讨论】:

  • 祝你的尝试好运 :-)
  • 以 Eclipse 用户的身份直接了解这些东西已经够难的了,所以我也希望您能以插件作者的身份尝试弄清楚它!
  • 谢谢,但我很难称自己为插件作者...还在学习中!

标签: eclipse eclipse-plugin file-extension


【解决方案1】:

我意识到我从来没有真正为这个问题选择过答案,最终我找到了一些有用的信息,所以我想我会分享它。

这是我理解和使用的信息;如果有任何错误或我误解了,我深表歉意,我愿意接受任何更正。

实际上比我预期的要简单得多。 要创建一个新的文件扩展名,你只需要扩展

org.eclipse.core.contenttype.contentTypes

如果您使用的是 PDE,那么您只需右键单击扩展程序(一旦将其添加到扩展程序选项卡中)并选择新建... -> 内容类型

这是它的xml代码,

<extension
         id="com.newLanguage.XYZ.contentType"
         point="org.eclipse.core.contenttype.contentTypes">
      <content-type
            file-extensions="xyz,xyzz"
            id="com.newLanguage.XYZ.contenttypeMod"
            name="XYZ File"
            priority="normal">
      </content-type>
   </extension>

在这里,您可以通过定义唯一的 id、人类可读的名称和扩展名来设置此内容类型的属性。您还可以为此内容类型提供多个扩展名。例如,我的 XYZ 语言可以有 2 种扩展名“.xyz”和“.xyzz”。

当我有一个通用文件扩展名时,内容描述器就会出现:'.xy',但文件的内容或格式可能会有所不同,因此我需要一个描述器,以便编辑器能够浏览文件并识别差异。这对于突出显示我需要了解差异的语法非常方便。

由于我不太擅长解释这一点,this link 对我非常有用。

但总而言之,this tutorial 让我步调一致,实际上让我在理解如何为 Eclipse 实现 IDE 插件方面取得了很大进展。我认为这是一个非常理想的起点,尤其是对于新手而言。

另一个让我继续工作的地方是Eclipse FAQs,但我特别想指出section 3.5 Implementing Support for Your Own Language,它有很多教程链接。

【讨论】:

  • 什么是“PDE”?你引用了它两次,但没有解释它代表什么。
  • 插件开发环境
【解决方案2】:

注意:这(新语言支持,自定义语法突出显示,...)是 XText 提供的一种功能。

Xtext - 语言开发框架

使用 Xtext,您可以轻松创建自己的编程语言和特定领域语言 (DSL)。
该框架支持语言基础设施的开发,包括编译器和解释器以及成熟的基于 Eclipse 的 IDE 集成。

自从sources are available以来,你可能有很多线索可以说明你目前正在寻找的包的用法。

【讨论】:

  • 即使已经编写了编译器和解释器,这也适用,我只需要创建 IDE(确切地说是 xyz 语言程序员的 GUI),然后连接到编译器和解释器?
  • @nEm:我不确定:XText 生成的所有类都基于您的语言语法,所以我不知道您是否可以为自己的类切换这些类。但我的观点是:在编辑器和语法高亮方面,在这个 XText 插件中有很多实际的实现示例。所以即使不直接使用,也至少可以从中汲取一些灵感。
  • 是的!谢谢,我会调查一下。绝对是一个好的方向。
  • VonC:我确实查看了 XText,但它不是我想要的。虽然我一直记住它,因为它看起来非常有用。
  • @nEm:太好了,谢谢你的反馈,我赞成你的回答;)
猜你喜欢
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
相关资源
最近更新 更多