我想扩展gnu c的CDT语言插件,在此基础上创建某种新语言。Eclipse CDT扩展构建附加语言
新语言在编辑器中应该有不同的视觉外观。如果在前面有一个特殊的预处理器指令(如注释),我想用灰色将方法主体着色。
有没有人知道在哪里扩展GCC语言来进行这种修改?
EDIT1:
如实例我想要specialFunction的方法体的颜色是灰色的,作为原因的示例注释的 - >#annotation
#annotation
int specialFunction(){
return 1;
}
编辑2:
我到目前为止所尝试的是建立一个“扩展语言”。计划是突出预处理器的位置,并保存位置,以便下面的方法将被着色。我设法让预处理器关键字变成了彩色,但不知道如何处理方法体颜色。被着色
public class OwnKeyWords extends GCCLanguage implements ICLanguageKeywords
@Override
public String[] getPreprocessorKeywords() {
//System.out.println("Called keywords" + timesPre++);
return new String[]{
"hide",
"show"
};
}
实施例:
#hide
int specialFunction(){
return 1;
}
在上述 “隐藏” 的例子将被突出显示。
EDIT3:
我试图执行ISemanticHighlighter并尝试了一些方法来突出我的代码:
CVariable
CFunction
ObjectStyleMacro
...
但是他们的非哪里适合与突出的方法体一个预处理器指令或其他任何顶层的指令。
同样的音符ISemanticHighlighter:
* NOTE: Implementors are not allowed to keep a reference on the token or on any object retrieved from the
* token.
不是我想要达到的目标,因为我想保持参照突出的对象对于今后的业务。
也许org.eclipse.cdt.ui.text.folding.DefaultCFoldingStructureProvider也是一个选项,在那里我不能着色仪器,我可以隐藏它。
这是一个很广泛的问题,按照目前的要求,所以我不能提供一个完整的答案。看一看虽然在http://help.eclipse.org/mars/topic/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html?cp=14_1_1_7和扩展点是如何在使用CDT自己定义GCC语言变体或其他类似的语言,如Qt。 –
@JonahGraham进一步指定了这个问题 –
“这不是我想要实现的目标,因为我想继续参考高亮显示的对象以供日后操作。” - 在任何方面听起来都不对,您通常在CDT的所有API中都不允许保留对AST节点的引用。 –