import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaCodeReferenceElement;
+import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef;
import com.intellij.psi.javadoc.PsiDocTag;
-import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ThreeState;
import org.jetbrains.annotations.NotNull;
+import static com.intellij.patterns.PsiJavaPatterns.psiElement;
+import static com.intellij.patterns.StandardPatterns.or;
+
/**
* @author peter
*/
@NotNull
@Override
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
- if (PsiTreeUtil.findElementOfClassAtOffset(psiFile, offset - 1, PsiDocTag.class, false) != null &&
- PsiTreeUtil.findElementOfClassAtOffset(psiFile, offset - 1, PsiJavaCodeReferenceElement.class, false) != null) {
+ if (psiElement().inside(PsiDocTag.class).inside(
+ or(psiElement(PsiJavaCodeReferenceElement.class), psiElement(PsiDocMethodOrFieldRef.class)))
+ .accepts(contextElement)) {
return ThreeState.NO;
}
if (PlatformPatterns.psiElement(JavaDocTokenType.DOC_TAG_NAME).accepts(contextElement)) {
assert lookup
}
+ public void "test popup in javadoc local reference"() {
+ myFixture.configureByText("a.java", """
+ /**
+ * {@link #<caret>}
+ */
+ class Foo {
+ void foo() {}
+ }
+ """)
+ type 'f'
+ assert lookup
+ }
+
public void "test autopopup in javadoc tag name"() {
myFixture.configureByText("a.java", """
/**