我将下面的代码实现到MySemanticHighlightingCalculator中,并且一个元素的颜色按预期更改。但默认的默认突出显示,如关键字的紫色不再起作用。
INode root = resource.getParseResult().getRootNode();
BidiTreeIterator<INode> iterator = root.getAsTreeIterable().iterator();
while (iterator.hasNext()) {
INode node = iterator.next();
if (node.getSemanticElement() instanceof ParameterDesc) {
ParameterDesc paramdesc = (ParameterDesc) node
.getSemanticElement();
if (paramdesc.isUnselected() == true) {
acceptor.addPosition(
node.getOffset(),
node.getLength(),
MySemanticHighlightingConfiguration.PARAMETER_DESCRIPTION);
}
}
}
public static final String PARAMETER_DESCRIPTION = "Parameter_Description";
public void configure(IHighlightingConfigurationAcceptor acceptor) {
addType(acceptor, PARAMETER_DESCRIPTION, 255, 0, 0, TextAttribute.STRIKETHROUGH);
}
public void addType(IHighlightingConfigurationAcceptor acceptor, String s,
int r, int g, int b, int style) {
TextStyle textStyle = new TextStyle();
textStyle.setColor(new RGB(r, g, b));
textStyle.setStyle(style);
acceptor.acceptDefaultHighlighting(s, s, textStyle);
}
但是当我从MyDSLUiModule中删除MySemanticHighlightingConfiguration时,默认突出显示工作再次成功:
public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() {
return MySemanticHighlightingConfiguration.class;
}
我知道默认突出显示不会在偏移和偏移+长度之间应用,但我希望它用于文档的其余部分。
答案 0 :(得分:1)
您的突出显示配置必须扩展DefaultHighlightingConfiguration
,您必须调用super.configure()
。这样就可以了。
请注意,resource.getParseResult()
在某些极少数情况下可能为空。