之後我想通了一個PsiElement已經包含像"FooTokenType.NAME, FooTokenType.TITLE or FooTokenType.END expected, got 'IntellijIdeaRulezzz'"
這樣的通用錯誤描述我已經以非常實用的方式管理了自動完成:
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) {
PsiElement element = parameters.getPosition().getParent();
String genericErrorDescription = ((PsiErrorElementImpl) element).getErrorDescription();
errorDescription = errorDescription.substring(0, errorDescription.indexOf(" expected, got "));
errorDescription = errorDescription.replaceAll("FooTokenType\\.", "");
String[] suggestedTokens = errorDescription.split("(,)|(or)");
for (String suggestedToken : suggestedTokens) {
resultSet.addElement(LookupElementBuilder.create(suggestedToken));
}
}
這會導致預期的行爲。我希望這有助於其他人,請讓我知道是否有更好的解決方案。