我可以配置插件,以便在CDT CEditor中打开具有某些扩展名的文件。
<editor
class="org.eclipse.cdt.internal.ui.editor.CEditor"
contributorClass="org.eclipse.cdt.internal.ui.editor.CEditorActionContributor"
default="true"
filenames="*.ext, *.c"
icon="icons/small.png"
id="de.blub.ide.exteditor"
name="EXT Editor">
</editor>
这可以某种方式起作用,但是我想扩展CEditor以具有更多功能并更改一些现有功能。例如,我对大纲视图不满意。根据{{3}}的说法,2009年,方法是使用扩展点“ org.eclipse.cdt.ui.language”定义我自己的语言。
这是我的方法:
<extension
point="org.eclipse.cdt.core.language"
id="de.blub.ide.mylanguage"
name="My Test Languager">
<language
class="de.blub.base.utils.MyTestLanguage"
id="de.blub.plugin.mytestlanguage"
name="My Test Language">
<contentType id="org.eclipse.cdt.core.cSource"/>
<contentType id="org.eclipse.cdt.core.cHeader"/>
</language>
</extension>
我写了一个扩展AbstractCLikeLanguage
的类:
package de.blub.base.utils;
import org.eclipse.cdt.core.dom.parser.AbstractCLikeLanguage;
import org.eclipse.cdt.core.dom.parser.ISourceCodeParser;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.parser.IParserLogService;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.ParserMode;
public class MyTestLanguage extends AbstractCLikeLanguage {
private static final String id = "de.blub.plugin.mytestlanguage";
@Override
public String getId() {
return id;
}
@Override
public int getLinkageID() {
// TODO Auto-generated method stub
return 0;
}
@Override
protected ISourceCodeParser createParser(IScanner scanner, ParserMode parserMode, IParserLogService logService,
IIndex index) {
return null;
}
@Override
protected ParserLanguage getParserLanguage() {
// TODO Auto-generated method stub
return ParserLanguage.C;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public Object getAdapter(Class adapter) {
if (ICLanguageKeywords.class.equals(adapter))
return this;
return super.getAdapter(adapter);
}
@Override
public String[] getKeywords() {
return super.getKeywords();
}
}
如何将某个文件扩展名与此语言相关联?
不幸的是,我发现很少有使用扩展点org.eclipse.cdt.core.language
的示例。目前,我什至不确定这是否是我想要的。但是描述似乎令人生厌:
此扩展点用于声明一种或多种语言 变体。语言定义了如何创建文件的C模型(例如 填充轮廓视图。
编辑:
我添加了一个contentType:
<extension
point="org.eclipse.core.contenttype.contentTypes">
<content-type
file-extensions="ext"
id="de.blub.contenttype.ext"
name="EXT"
priority="high">
</content-type>
可以在语言部分添加此contentType。
<language
...
<contentType
id="de.verified.rtt.contenttype.rts">
</contentType>
</language>
在Window->Preferences->General->Content Types
下,我可以将新的内容类型与新的编辑器链接。我也可以在此处添加新的文件关联。但是我不想手动添加文件关联!一定可以在plugin.xml中执行此操作。
我还试图添加一个editorContentTypeBinding
,如下所示:
<editorContentTypeBinding
contentTypeId="de.blub.contenttype.ext"
editorId="de.blub.ide.exteditor">
</editorContentTypeBinding>
使用此条目,在“窗口”->“首选项”->“常规”->“内容类型”下,我可以看到文件关联。它已被锁定,所以我无法对其进行编辑。听起来很有希望,但不幸的是它没有效果。也许使用了正确的编辑器,但没有使用正确的语言。