Eclipse CDT 的索引器是否仅限于源文件和 headers 的常见文件类型?
Is Ecplise CDT's indexer limited to the common filetypes for sources and headers?
我正在做一个涉及 TOM 文件(.t 扩展名)的项目,这些文件被编译成 .c 文件。现在,我已经告诉我的 Eclipse 像对待 C 源文件一样对待它们,但是 CDT 索引器似乎不想触及它们。是否可以告诉它考虑其他文件类型?
注意:TOM 文件看起来就像 C 文件,但有一些额外的语法,这看起来就像索引器某些行上的语法错误。
最简单的方法是定义一个新关联。要在您的项目上执行此操作,请打开 Project Properties
-> C/C++ General
-> File Types
,然后 select Use Project Settings
并定义一个新扩展名:
您也可以在工作区级别定义它,Window
-> Preferences
-> C/C++
-> File Types
这应该能满足您的大部分需求。例如,(我其实不认识TOM),我有一个简单的项目,有1个C文件,1个H文件和1个T文件。您想要和期望的所有功能 都能正常工作:
如果你想要更多
如果您想要更多,这可以做到,但必须编写您自己的 Eclipse 插件,该插件对 *.t
文件有一点了解。幸运的是,只需要几行XML。到此结束时,您应该得到与上面基本相同的功能,但您有一个开始创建您自己的 TOM 插件的起点。
您需要做的是通过扩展 org.eclipse.core.contenttype.contentTypes
extension point (there is also some older docs that gave a run through)
来定义内容类型
在您的 plugin.xml
中,这看起来像:
<extension point="org.eclipse.core.contenttype.contentTypes">
<!-- declares a content type for TOM source files -->
<content-type id="tSource" name="TOM File"
base-type="org.eclipse.core.runtime.text"
file-extensions="t"
priority="high"/>
</extension>
您可以考虑制作 base-type
纯文本以外的内容,例如你可以做到 org.eclipse.cdt.core.cSource
.
然后你需要定义一个新的语言,为了我们的目的叫做TOM Language。您可以使用 org.eclipse.cdt.core.language
extension point.
这可能看起来像的一个例子是:
<extension
point="org.eclipse.cdt.core.language">
<language
class="org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage"
id="com.kichwacoders.tom.core.tomlanguage"
name="TOM Language">
<contentType
id="com.kichwacoders.tom.core.tSource"></contentType>
</language>
</extension>
class、GCCLanguage
是标准的GCC之一。当然,如果您想进一步改进支持,添加或自定义解析器是一个选项(以删除有关 tom 东西的那些语法错误),您可以扩展 GCCLanguage 或层次结构中的其他 classes 之一。
完成所有这些并将新插件添加到 Eclipse 安装后,您将获得 TOM 文件支持。
如果您已经阅读到最后,您可能会发现简单地 fork 包含上述所有代码的 https://github.com/jonahkichwacoders/com.kichwacoders.tom.core 很有用?
我正在做一个涉及 TOM 文件(.t 扩展名)的项目,这些文件被编译成 .c 文件。现在,我已经告诉我的 Eclipse 像对待 C 源文件一样对待它们,但是 CDT 索引器似乎不想触及它们。是否可以告诉它考虑其他文件类型?
注意:TOM 文件看起来就像 C 文件,但有一些额外的语法,这看起来就像索引器某些行上的语法错误。
最简单的方法是定义一个新关联。要在您的项目上执行此操作,请打开 Project Properties
-> C/C++ General
-> File Types
,然后 select Use Project Settings
并定义一个新扩展名:
您也可以在工作区级别定义它,Window
-> Preferences
-> C/C++
-> File Types
这应该能满足您的大部分需求。例如,(我其实不认识TOM),我有一个简单的项目,有1个C文件,1个H文件和1个T文件。您想要和期望的所有功能 都能正常工作:
如果你想要更多
如果您想要更多,这可以做到,但必须编写您自己的 Eclipse 插件,该插件对 *.t
文件有一点了解。幸运的是,只需要几行XML。到此结束时,您应该得到与上面基本相同的功能,但您有一个开始创建您自己的 TOM 插件的起点。
您需要做的是通过扩展 org.eclipse.core.contenttype.contentTypes
extension point (there is also some older docs that gave a run through)
在您的 plugin.xml
中,这看起来像:
<extension point="org.eclipse.core.contenttype.contentTypes">
<!-- declares a content type for TOM source files -->
<content-type id="tSource" name="TOM File"
base-type="org.eclipse.core.runtime.text"
file-extensions="t"
priority="high"/>
</extension>
您可以考虑制作 base-type
纯文本以外的内容,例如你可以做到 org.eclipse.cdt.core.cSource
.
然后你需要定义一个新的语言,为了我们的目的叫做TOM Language。您可以使用 org.eclipse.cdt.core.language
extension point.
这可能看起来像的一个例子是:
<extension
point="org.eclipse.cdt.core.language">
<language
class="org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage"
id="com.kichwacoders.tom.core.tomlanguage"
name="TOM Language">
<contentType
id="com.kichwacoders.tom.core.tSource"></contentType>
</language>
</extension>
class、GCCLanguage
是标准的GCC之一。当然,如果您想进一步改进支持,添加或自定义解析器是一个选项(以删除有关 tom 东西的那些语法错误),您可以扩展 GCCLanguage 或层次结构中的其他 classes 之一。
完成所有这些并将新插件添加到 Eclipse 安装后,您将获得 TOM 文件支持。
如果您已经阅读到最后,您可能会发现简单地 fork 包含上述所有代码的 https://github.com/jonahkichwacoders/com.kichwacoders.tom.core 很有用?