我正在尝试使用Grammar-Kit插件为IntelliJ开发自定义语言插件。我很容易为定义的标记提供语法高亮,但我无法弄清楚如何在元素或标记 - 父级别上突出显示。
这是一种快速而肮脏的示例语言 - https://github.com/carymrobbins/intellij-plugin-example
解
正如@ignatov建议的那样,扩展Annotator类并在plugin.xml
中注册它。在下面的示例中,我们通过定义command
方法来突出显示visitCommand
元素。
public class SimpleAnnotator implements Annotator {
@Override
public void annotate(@NotNull final PsiElement element, @NotNull final AnnotationHolder holder) {
element.accept(new SimpleVisitor() {
@Override
public void visitCommand(@NotNull SimpleCommand o) {
super.visitCommand(o);
setHighlighting(o, holder, SimpleSyntaxHighlighter.COMMAND);
}
});
}
private static void setHighlighting(@NotNull PsiElement element, @NotNull AnnotationHolder holder,
@NotNull TextAttributesKey key) {
holder.createInfoAnnotation(element, null).setEnforcedTextAttributes(TextAttributes.ERASE_MARKER);
holder.createInfoAnnotation(element, null).setEnforcedTextAttributes(
EditorColorsManager.getInstance().getGlobalScheme().getAttributes(key));
}
}
答案 0 :(得分:5)
使用com.intellij.lang.annotation.Annotator
的自定义实现。