mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-131899 Writing Javadoc does not automatically trigger hinting / auto-completion
autopopup in parameter names
This commit is contained in:
+18
-9
@@ -16,17 +16,14 @@
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.patterns.PlatformPatterns;
|
||||
import com.intellij.psi.JavaDocTokenType;
|
||||
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.*;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.util.ThreeState;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import static com.intellij.patterns.PsiJavaPatterns.psiElement;
|
||||
import static com.intellij.patterns.StandardPatterns.or;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -36,9 +33,7 @@ public class JavadocCompletionConfidence extends CompletionConfidence {
|
||||
@NotNull
|
||||
@Override
|
||||
public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) {
|
||||
if (psiElement().inside(PsiDocTag.class).inside(
|
||||
or(psiElement(PsiJavaCodeReferenceElement.class), psiElement(PsiDocMethodOrFieldRef.class)))
|
||||
.accepts(contextElement)) {
|
||||
if (psiElement().inside(PsiDocTag.class).accepts(contextElement) && findJavaReference(psiFile, offset - 1) != null) {
|
||||
return ThreeState.NO;
|
||||
}
|
||||
if (PlatformPatterns.psiElement(JavaDocTokenType.DOC_TAG_NAME).accepts(contextElement)) {
|
||||
@@ -46,4 +41,18 @@ public class JavadocCompletionConfidence extends CompletionConfidence {
|
||||
}
|
||||
return super.shouldSkipAutopopup(contextElement, psiFile, offset);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiJavaReference findJavaReference(final PsiFile file, final int offset) {
|
||||
PsiReference reference = file.findReferenceAt(offset);
|
||||
if (reference instanceof PsiMultiReference) {
|
||||
for (final PsiReference psiReference : ((PsiMultiReference)reference).getReferences()) {
|
||||
if (psiReference instanceof PsiJavaReference) {
|
||||
return (PsiJavaReference)psiReference;
|
||||
}
|
||||
}
|
||||
}
|
||||
return reference instanceof PsiJavaReference ? (PsiJavaReference)reference : null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+13
-1
@@ -247,7 +247,6 @@ class JavaAutoPopupTest extends CompletionAutoPopupTestCase {
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
public void "test popup in javadoc reference"() {
|
||||
myFixture.configureByText("a.java", """
|
||||
/**
|
||||
@@ -300,6 +299,19 @@ class Foo {
|
||||
type 'o'
|
||||
assert !lookup
|
||||
}
|
||||
|
||||
public void "test autopopup in javadoc parameter name"() {
|
||||
myFixture.configureByText("a.java", """
|
||||
class Foo {
|
||||
/**
|
||||
* @param <caret>
|
||||
*/
|
||||
void foo2(Object oooooooo) {}
|
||||
}
|
||||
""")
|
||||
type 'o'
|
||||
assert lookup
|
||||
}
|
||||
|
||||
public void testPrefixLengthDependentSorting() {
|
||||
myFixture.addClass("package foo; public class PsiJavaCodeReferenceElement {}")
|
||||
|
||||
Reference in New Issue
Block a user