Skip to content

Commit d91764e

Browse files
committed
add support for twig form_theme 232
1 parent e562d9d commit d91764e

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,13 @@ public static PsiElementPattern.Capture<PsiComment> getTwigDocBlockMatchPattern(
379379
.withLanguage(TwigLanguage.INSTANCE);
380380
}
381381

382+
public static PsiElementPattern.Capture<PsiElement> getFormThemeFileTag() {
383+
return PlatformPatterns
384+
.psiElement(TwigTokenTypes.STRING_TEXT)
385+
.withParent(PlatformPatterns.psiElement().withText(PlatformPatterns.string().matches("\\{%\\s+form_theme.*")))
386+
.withLanguage(TwigLanguage.INSTANCE);
387+
}
388+
382389
public static ElementPattern<PsiElement> getRoutePattern() {
383390
return PlatformPatterns
384391
.psiElement(TwigTokenTypes.IDENTIFIER).withText("path")

src/fr/adrienbrault/idea/symfony2plugin/navigation/TwigFoldingBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ private void attachTemplateFoldingDescriptors(PsiElement psiElement, List<Foldin
5858
PsiElement[] fileReferences = PsiTreeUtil.collectElements(psiElement, new PsiElementFilter() {
5959
@Override
6060
public boolean isAccepted(PsiElement psiElement) {
61-
return TwigHelper.getTemplateFileReferenceTagPattern().accepts(psiElement);
61+
return TwigHelper.getTemplateFileReferenceTagPattern().accepts(psiElement) || TwigHelper.getFormThemeFileTag().accepts(psiElement);
6262
}
6363
});
6464

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,35 @@ public void addCompletions(@NotNull CompletionParameters parameters,
387387
new ControllerCompletionProvider()
388388
);
389389

390+
// {# @Container Foo:Bar #}
391+
extend(
392+
CompletionType.BASIC,
393+
TwigHelper.getFormThemeFileTag(),
394+
new FormThemeCompletionProvider()
395+
);
396+
397+
398+
}
399+
400+
private class FormThemeCompletionProvider extends CompletionProvider<CompletionParameters> {
401+
402+
@Override
403+
protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) {
404+
405+
PsiElement psiElement = parameters.getOriginalPosition();
406+
407+
if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) {
408+
return;
409+
}
410+
411+
Map<String, TwigFile> twigFilesByName = TwigHelper.getTwigFilesByName(parameters.getPosition().getProject());
412+
for (Map.Entry<String, TwigFile> entry : twigFilesByName.entrySet()) {
413+
resultSet.addElement(
414+
new TemplateLookupElement(entry.getKey(), entry.getValue())
415+
);
416+
}
417+
418+
}
390419
}
391420

392421
/**

0 commit comments

Comments
 (0)