diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java index 12e502ebc..e6b65d207 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java @@ -780,6 +780,10 @@ public static ElementPattern getPhpConstPattern() { * _defaults: * bind: * $ + * + * my.service: + * arguments: + * $ */ static ElementPattern getNamedDefaultBindPattern() { // "__defaults" key @@ -798,18 +802,26 @@ public boolean accepts(@NotNull YAMLKeyValue yamlKeyValue, ProcessingContext con } }).withParent(defaultsKey)); + // "arguments" bind + PsiElementPattern.Capture argumentsKey = PlatformPatterns.psiElement(YAMLMapping.class).withParent(PlatformPatterns.psiElement(YAMLKeyValue.class).with(new PatternCondition("KeyText") { + @Override + public boolean accepts(@NotNull YAMLKeyValue yamlKeyValue, ProcessingContext context) { + return "arguments".equals(yamlKeyValue.getKeyText()); + } + })); + // complete code // bind: // $: '' PsiElementPattern.Capture argumentPattern = PlatformPatterns.psiElement(YAMLTokenTypes.SCALAR_KEY).withText(PlatformPatterns.string().startsWith("$")).withParent( - PlatformPatterns.psiElement(YAMLKeyValue.class).withParent(bindKey) + PlatformPatterns.psiElement(YAMLKeyValue.class).withParent(PlatformPatterns.or(bindKey, argumentsKey)) ); // incomplete code // bind: // $ PsiElementPattern.Capture incompleteCodePattern = PlatformPatterns.psiElement(YAMLTokenTypes.TEXT).withText(PlatformPatterns.string().startsWith("$")).withParent( - PlatformPatterns.psiElement(YAMLScalar.class).withParent(bindKey) + PlatformPatterns.psiElement(YAMLScalar.class).withParent(PlatformPatterns.or(bindKey, argumentsKey)) ); return PlatformPatterns.or(argumentPattern, incompleteCodePattern); diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/yaml/YamlCompletionContributorTest.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/yaml/YamlCompletionContributorTest.java index 8e1882d5b..932123106 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/yaml/YamlCompletionContributorTest.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/yaml/YamlCompletionContributorTest.java @@ -307,4 +307,14 @@ public void testNamedArgumentCompletionForDefaultsBinding() { "$i" ); } + + public void testNamedArgumentCompletionForServiceArguments() { + assertCompletionContains(YAMLFileType.YML, "" + + "services:\n" + + " Foo\\Bar:\n" + + " arguments:\n" + + " $: ~\n", + "$i" + ); + } }