我正在扩展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
中定义,但我不知道如何从那里获取这些值。
我发现这是解决方法