【发布时间】:2020-04-28 10:46:32
【问题描述】:
我正在扩展 ANTLR example plugin,以添加括号突出显示,所以我已经从 intellij sdk 实现了 PairedBraceMatcher 类,但是我找不到从索引中获取 PsiElement 的方法,这个是我尝试过的:
public class SampleBraceMather implements PairedBraceMatcher {
private static final BracePair[] PAIRS = {
new BracePair(TokenIElementType.find((short) 327), TokenIElementType.find((short) 328), true)
};
@NotNull
@Override
public BracePair[] getPairs() {
return PAIRS;
}
@Override
public boolean isPairedBracesAllowedBeforeType(@NotNull IElementType lbraceType, @Nullable IElementType contextType) {
return true;
}
@Override
public int getCodeConstructStart(PsiFile file, int openingBraceOffset) {
return openingBraceOffset;
}
}
这确实有效,但我不想对令牌索引进行硬编码(因为它们经常更改),到目前为止我所拥有的只是 SampleLanguageParser.LBRACE 和 SampleLanguageParser.RBRACE,它们是 ANTLR 令牌索引(11和 12)。
令牌索引(327 和 328)仅在 atn 类别下的(生成的)文件 SampleLanguageLexer.interop 中定义,但我不知道如何从那里获取这些值。
【问题讨论】:
标签: java antlr syntax-highlighting intellij-plugin brackets