0

以下のコードを MySemanticHighlightingCalculator に実装すると、1 つの要素の色が期待どおりに変わります。しかし、キーワードの紫の色など、デフォルトのデフォルトの強調表示は機能しなくなりました。

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;
    }

デフォルトの強調表示がオフセットとオフセット + 長さの間に適用されないことはわかっていますが、ドキュメントの残りの部分には適用したいと考えています。

4

1 に答える 1

1

強調表示の構成は を拡張するDefaultHighlightingConfiguration必要があり、 を呼び出す必要がありますsuper.configure()。それはトリックを行います。

resource.getParseResult()まれに null になる場合がありますのでご注意ください。

于 2013-02-04T19:11:49.710 に答える