|
11 | 11 | import com.intellij.psi.PsiElement;
|
12 | 12 | import com.intellij.psi.PsiFile;
|
13 | 13 | import com.intellij.psi.util.PsiTreeUtil;
|
| 14 | +import com.intellij.util.Consumer; |
14 | 15 | import com.intellij.util.ProcessingContext;
|
15 | 16 | import com.jetbrains.php.completion.PhpLookupElement;
|
16 | 17 | import com.jetbrains.php.lang.psi.elements.Method;
|
@@ -199,9 +200,12 @@ public void addCompletions(@NotNull CompletionParameters parameters,
|
199 | 200 | YamlElementPatternHelper.getSingleLineScalarKey("alias")
|
200 | 201 | ), new FormAliasCompletionProvider());
|
201 | 202 |
|
202 |
| - extend(CompletionType.BASIC, StandardPatterns.and( |
203 |
| - YamlElementPatternHelper.getInsideKeyValue("calls") |
204 |
| - ), new ServiceCallsMethodCompletion()); |
| 203 | + // - [ setContainer, [ @service_container ] ] |
| 204 | + extend( |
| 205 | + CompletionType.BASIC, |
| 206 | + YamlElementPatternHelper.getInsideKeyValue("calls"), |
| 207 | + new ServiceCallsMethodCompletion() |
| 208 | + ); |
205 | 209 |
|
206 | 210 | extend(CompletionType.BASIC, StandardPatterns.and(
|
207 | 211 | YamlElementPatternHelper.getInsideKeyValue("tags"),
|
@@ -380,27 +384,23 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
|
380 | 384 | private class ServiceCallsMethodCompletion extends CompletionProvider<CompletionParameters> {
|
381 | 385 |
|
382 | 386 | protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) {
|
383 |
| - |
384 | 387 | if(!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) {
|
385 | 388 | return;
|
386 | 389 | }
|
387 | 390 |
|
388 |
| - // TODO: move this to pattern; filters match on parameter array |
389 | 391 | // - [ setContainer, [ @service_container ] ]
|
390 | 392 | PsiElement psiElement = completionParameters.getPosition();
|
391 |
| - if(psiElement.getParent() == null || !(psiElement.getParent().getContext() instanceof YAMLSequence)) { |
392 |
| - return; |
393 |
| - } |
394 | 393 |
|
395 |
| - YAMLKeyValue callYamlKeyValue = PsiTreeUtil.getParentOfType(psiElement, YAMLKeyValue.class); |
396 |
| - if(callYamlKeyValue == null) { |
397 |
| - return; |
| 394 | + PsiElement yamlScalar = psiElement.getParent(); |
| 395 | + if(yamlScalar instanceof YAMLScalar) { |
| 396 | + YamlHelper.visitServiceCall((YAMLScalar) yamlScalar, clazz -> { |
| 397 | + PhpClass phpClass = ServiceUtil.getResolvedClassDefinition(psiElement.getProject(), clazz); |
| 398 | + if(phpClass != null) { |
| 399 | + PhpElementsUtil.addClassPublicMethodCompletion(completionResultSet, phpClass); |
| 400 | + } |
| 401 | + }); |
398 | 402 | }
|
399 |
| - |
400 |
| - addYamlClassMethods(callYamlKeyValue.getContext(), completionResultSet, "class"); |
401 |
| - |
402 | 403 | }
|
403 |
| - |
404 | 404 | }
|
405 | 405 |
|
406 | 406 | private static void addYamlClassMethods(@Nullable PsiElement psiElement, CompletionResultSet completionResultSet, String classTag) {
|
|
0 commit comments