Skip to content

Commit 4d567c3

Browse files
authored
Merge pull request #1956 from Haehnchen/feature/class-constant-priority
prioritize class constant parameter completion for Doctrine repository and form types
2 parents a4493b5 + 66ff5c7 commit 4d567c3

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/completion/DoctrineCompletionContributor.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ public class DoctrineCompletionContributor extends CompletionContributor {
2727
public DoctrineCompletionContributor() {
2828

2929
// getRepository(FOO) -> getRepository(FOO::class)
30-
extend(CompletionType.BASIC, PlatformPatterns.psiElement().withParent(ConstantReference.class), new CompletionProvider<CompletionParameters>() {
30+
extend(CompletionType.BASIC, PlatformPatterns.psiElement().withParent(ConstantReference.class), new CompletionProvider<>() {
3131
@Override
32-
protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) {
32+
protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) {
3333
PsiElement psiElement = completionParameters.getOriginalPosition();
3434
if (!Symfony2ProjectComponent.isEnabled(psiElement)) {
3535
return;
@@ -40,11 +40,11 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
4040
return;
4141
}
4242

43-
if(!(
43+
if (!(
4444
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Common\\Persistence\\ObjectManager", "getRepository") ||
45-
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository") ||
46-
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ObjectManager", "getRepository") ||
47-
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ManagerRegistry", "getRepository")
45+
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository") ||
46+
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ObjectManager", "getRepository") ||
47+
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Doctrine\\Persistence\\ManagerRegistry", "getRepository")
4848
)) {
4949
return;
5050
}
@@ -53,15 +53,15 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
5353

5454
for (DoctrineModel doctrineModel : modelClasses) {
5555
PhpClass phpClass = doctrineModel.getPhpClass();
56-
if(phpClass.isAbstract() || phpClass.isInterface()) {
56+
if (phpClass.isAbstract() || phpClass.isInterface()) {
5757
continue;
5858
}
5959

6060
LookupElement elementBuilder = new Foo(phpClass);
6161

6262
// does this have an effect really?
6363
completionResultSet.addElement(
64-
PrioritizedLookupElement.withExplicitProximity(PrioritizedLookupElement.withPriority(elementBuilder, 1000), 1000)
64+
PrioritizedLookupElement.withPriority(elementBuilder, 100)
6565
);
6666
}
6767

src/main/java/fr/adrienbrault/idea/symfony2plugin/form/completion/FormCompletionContributor.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
import com.intellij.codeInsight.completion.*;
44
import com.intellij.codeInsight.lookup.LookupElement;
5+
import com.intellij.patterns.PatternCondition;
56
import com.intellij.patterns.PlatformPatterns;
7+
import com.intellij.patterns.StandardPatterns;
68
import com.intellij.psi.PsiElement;
79
import com.intellij.util.ProcessingContext;
810
import com.jetbrains.php.PhpIndex;
911
import com.jetbrains.php.lang.psi.elements.ConstantReference;
1012
import com.jetbrains.php.lang.psi.elements.MethodReference;
1113
import com.jetbrains.php.lang.psi.elements.PhpClass;
1214
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
15+
import fr.adrienbrault.idea.symfony2plugin.dic.ServiceCompletionProvider;
1316
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
1417
import org.jetbrains.annotations.NotNull;
1518

@@ -19,9 +22,9 @@
1922
public class FormCompletionContributor extends CompletionContributor {
2023

2124
public FormCompletionContributor() {
22-
extend(CompletionType.BASIC, PlatformPatterns.psiElement().withParent(ConstantReference.class), new CompletionProvider<CompletionParameters>() {
25+
extend(CompletionType.BASIC, PlatformPatterns.psiElement().withParent(ConstantReference.class), new CompletionProvider<>() {
2326
@Override
24-
protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) {
27+
protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) {
2528
PsiElement psiElement = completionParameters.getOriginalPosition();
2629
if (!Symfony2ProjectComponent.isEnabled(psiElement)) {
2730
return;
@@ -32,8 +35,8 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
3235
return;
3336
}
3437

35-
if(!(
36-
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Symfony\\Component\\Form\\FormBuilderInterface", "add") ||
38+
if (!(
39+
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Symfony\\Component\\Form\\FormBuilderInterface", "add") ||
3740
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Symfony\\Component\\Form\\FormBuilderInterface", "create") ||
3841
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Symfony\\Component\\Form\\FormFactoryInterface", "createNamedBuilder") ||
3942
PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, "Symfony\\Component\\Form\\FormFactoryInterface", "createNamed")
@@ -42,20 +45,17 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
4245
}
4346

4447
for (PhpClass phpClass : PhpIndex.getInstance(psiElement.getProject()).getAllSubclasses("\\Symfony\\Component\\Form\\FormTypeInterface")) {
45-
if(phpClass.isAbstract() || phpClass.isInterface()) {
48+
if (phpClass.isAbstract() || phpClass.isInterface()) {
4649
continue;
4750
}
4851

4952
LookupElement elementBuilder = new FormClassConstantsLookupElement(phpClass);
5053

51-
// does this have an effect really?
5254
completionResultSet.addElement(
53-
PrioritizedLookupElement.withExplicitProximity(PrioritizedLookupElement.withPriority(elementBuilder, 1000), 1000)
55+
PrioritizedLookupElement.withPriority(elementBuilder, 100)
5456
);
5557
}
56-
5758
}
58-
5959
});
6060
}
6161

src/main/resources/META-INF/plugin.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@
201201
<completion.contributor language="yaml" implementationClass="fr.adrienbrault.idea.symfony2plugin.completion.yaml.YamlCompletionContributor"/>
202202

203203
<completion.contributor language="XML" implementationClass="fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.DoctrineXmlCompletionContributor"/>
204-
<completion.contributor language="PHP" implementationClass="fr.adrienbrault.idea.symfony2plugin.form.completion.FormCompletionContributor"/>
205-
<completion.contributor language="PHP" implementationClass="fr.adrienbrault.idea.symfony2plugin.doctrine.completion.DoctrineCompletionContributor"/>
204+
<completion.contributor language="PHP" implementationClass="fr.adrienbrault.idea.symfony2plugin.form.completion.FormCompletionContributor" order="first"/>
205+
<completion.contributor language="PHP" implementationClass="fr.adrienbrault.idea.symfony2plugin.doctrine.completion.DoctrineCompletionContributor" order="first"/>
206206

207207
<completion.contributor language="PHP" implementationClass="fr.adrienbrault.idea.symfony2plugin.completion.PhpGotoDeclarationCompletionContributor$Completion"/>
208208
<gotoDeclarationHandler implementation="fr.adrienbrault.idea.symfony2plugin.completion.PhpGotoDeclarationCompletionContributor$GotoDeclaration"/>

0 commit comments

Comments
 (0)