Skip to content

Commit 2c5e580

Browse files
committed
whitelist twig "set tag" for twig extension references #600
1 parent 676866d commit 2c5e580

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

src/fr/adrienbrault/idea/symfony2plugin/TwigHelper.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,10 @@ public static ElementPattern<PsiElement> getCompletablePattern() {
722722
),
723723
PlatformPatterns.psiElement()
724724
)
725-
.withParent(PlatformPatterns.psiElement(TwigElementTypes.PRINT_BLOCK))
725+
.withParent(PlatformPatterns.or(
726+
PlatformPatterns.psiElement(TwigElementTypes.PRINT_BLOCK),
727+
PlatformPatterns.psiElement(TwigElementTypes.SET_TAG)
728+
))
726729
.withLanguage(TwigLanguage.INSTANCE);
727730
}
728731

src/fr/adrienbrault/idea/symfony2plugin/templating/TwigTemplateGoToLocalDeclarationHandler.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,10 @@ public PsiElement[] getGotoDeclarationTargets(PsiElement psiElement, int i, Edit
7474
if (PlatformPatterns
7575
.psiElement(TwigTokenTypes.IDENTIFIER)
7676
.beforeLeaf(PlatformPatterns.psiElement(TwigTokenTypes.LBRACE))
77-
.withParent(
78-
PlatformPatterns.psiElement(TwigElementTypes.PRINT_BLOCK)
79-
).withLanguage(TwigLanguage.INSTANCE).accepts(psiElement)) {
77+
.withParent(PlatformPatterns.or(
78+
PlatformPatterns.psiElement(TwigElementTypes.PRINT_BLOCK),
79+
PlatformPatterns.psiElement(TwigElementTypes.SET_TAG)
80+
)).withLanguage(TwigLanguage.INSTANCE).accepts(psiElement)) {
8081

8182
psiElements.addAll(Arrays.asList(this.getFunctions(psiElement)));
8283
}

tests/fr/adrienbrault/idea/symfony2plugin/tests/templating/TwigFilterCompletionContributorTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.adrienbrault.idea.symfony2plugin.tests.templating;
22

33
import com.intellij.patterns.PlatformPatterns;
4+
import com.jetbrains.php.lang.psi.elements.Function;
45
import com.jetbrains.php.lang.psi.elements.Method;
56
import com.jetbrains.twig.TwigFileType;
67
import com.jetbrains.twig.elements.TwigElementTypes;
@@ -159,4 +160,13 @@ public void testControllerReferences() {
159160
assertCompletionContains(TwigFileType.INSTANCE, "{% render \"<caret>\" %}", "FooBundle:Foo:bar");
160161
assertNavigationMatch(TwigFileType.INSTANCE, "{% render \"FooBundl<caret>e:Foo:bar\" %}", PlatformPatterns.psiElement(Method.class).withName("barAction"));
161162
}
163+
164+
/**
165+
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigTemplateCompletionContributor
166+
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigTemplateGoToLocalDeclarationHandler
167+
*/
168+
public void testSetTagIsAvailableForFunctionReferences() {
169+
assertCompletionContains(TwigFileType.INSTANCE, "{% set = <caret> %}", "json_bar");
170+
assertNavigationMatch(TwigFileType.INSTANCE, "{% set = json_<caret>bar() %}", PlatformPatterns.psiElement(Function.class));
171+
}
162172
}

0 commit comments

Comments
 (0)