Skip to content

Commit b5cb90e

Browse files
committed
Hide first parameter in tail completion of twig extensions if Twig_Environment type hint Haehnchen#314
1 parent bb0b027 commit b5cb90e

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
import com.intellij.util.indexing.FileBasedIndex;
2121
import com.intellij.util.indexing.FileBasedIndexImpl;
2222
import com.jetbrains.php.PhpIndex;
23+
import com.jetbrains.php.PhpPresentationUtil;
2324
import com.jetbrains.php.lang.PhpFileType;
25+
import com.jetbrains.php.lang.psi.elements.ClassReference;
26+
import com.jetbrains.php.lang.psi.elements.Parameter;
27+
import com.jetbrains.php.lang.psi.elements.PhpPsiElement;
2428
import com.jetbrains.twig.TwigFile;
2529
import com.jetbrains.twig.TwigFileType;
2630
import com.jetbrains.twig.TwigLanguage;
@@ -49,6 +53,7 @@
4953

5054
/**
5155
* @author Adrien Brault <adrien.brault@gmail.com>
56+
* @author Daniel Espendiller <daniel@espendiller.net>
5257
*/
5358
public class TwigHelper {
5459

@@ -945,4 +950,36 @@ public static Collection<LookupElement> getAllTemplateLookupElements(Project pro
945950

946951
return lookupElements;
947952
}
953+
954+
/**
955+
* Paramater formatter for twig extension to remove Twig_Environment parameter from completion display
956+
* ported from com.jetbrains.php.PhpPresentationUtil#formatParameters
957+
*
958+
*/
959+
public static StringBuilder formatParameters(@Nullable StringBuilder b, @NotNull Parameter[] parameters) {
960+
if (b == null) b = new StringBuilder();
961+
b.append('(');
962+
for (int i = 0; i < parameters.length; i++) {
963+
964+
if(i == 0) {
965+
PhpPsiElement classReference = parameters[i].getFirstPsiChild();
966+
if(classReference instanceof ClassReference) {
967+
String className = ((ClassReference) classReference).getFQN();
968+
if(new Symfony2InterfacesUtil().isInstanceOf(parameters[i].getProject(), className, "Twig_Environment")) {
969+
continue;
970+
}
971+
}
972+
}
973+
974+
b.append(PhpPresentationUtil.getParameterPresentation(parameters[i]));
975+
if (parameters.length - i > 1) {
976+
b.append(", ");
977+
}
978+
979+
}
980+
981+
b.append(')');
982+
return b;
983+
}
984+
948985
}

src/fr/adrienbrault/idea/symfony2plugin/templating/dict/TwigExtensionLookupElement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.jetbrains.php.PhpPresentationUtil;
88
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
99
import com.jetbrains.php.lang.psi.elements.impl.FunctionImpl;
10+
import fr.adrienbrault.idea.symfony2plugin.TwigHelper;
1011
import fr.adrienbrault.idea.symfony2plugin.templating.util.TwigExtensionParser;
1112
import fr.adrienbrault.idea.symfony2plugin.util.StringUtils;
1213
import org.jetbrains.annotations.NotNull;
@@ -42,7 +43,7 @@ public void renderElement(LookupElementPresentation presentation) {
4243

4344
PhpNamedElement function = phpNamedElements.iterator().next();
4445
if(function instanceof FunctionImpl) {
45-
presentation.setTailText(PhpPresentationUtil.formatParameters(null, ((FunctionImpl) function).getParameters()).toString(), true);
46+
presentation.setTailText(TwigHelper.formatParameters(null, ((FunctionImpl) function).getParameters()).toString(), true);
4647
}
4748

4849
}

0 commit comments

Comments
 (0)