public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, final @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(!Symfony2ProjectComponent.isEnabled(psiElement)) { return; } addClassCompletion(parameters, resultSet, psiElement, withInterface, withLeadingBackslash); } public static void addClassCompletion(CompletionParameters parameters, final CompletionResultSet resultSet, PsiElement psiElement, boolean withInterface) {
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } PhpClassCompletionProvider.addClassCompletion(parameters, resultSet, psiElement, false); } });
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext paramProcessingContext, @NotNull CompletionResultSet paramCompletionResultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } String routeName = TwigUtil.getMatchingRouteNameOnParameter(parameters.getOriginalPosition()); if(routeName == null) { return; } paramCompletionResultSet.addAllElements(Arrays.asList( RouteHelper.getRouteParameterLookupElements(parameters.getPosition().getProject(), routeName)) ); }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } // @TODO: filter on doctrine manager resultSet.addAllElements( DoctrineMetadataUtil.getObjectRepositoryLookupElements(psiElement.getProject()) ); } });
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement) || !(psiElement.getParent() instanceof MethodReference)) { return; } for(ConstantEnumCompletionProvider enumProvider: CONSTANTS_ENUMS) { if(enumProvider.getEnumType() == ConstantEnumCompletionProvider.EnumType.PARAMETER) { attachLookup(completionResultSet, (MethodReference) psiElement.getParent(), enumProvider); } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { if(!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) { return; } PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null) { return; } for(Map.Entry<String, PsiVariable> entry: TwigTypeResolveUtil.collectScopeVariables(parameters.getOriginalPosition()).entrySet()) { resultSet.addElement(LookupElementBuilder.create(entry.getKey()).withTypeText(TwigTypeResolveUtil.getTypeDisplayName(psiElement.getProject(), entry.getValue().getTypes())).withIcon(PhpIcons.CLASS)); } } }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } resultSet.addAllElements(TwigUtil.getTwigLookupElements(parameters.getPosition().getProject())); } }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { YAMLKeyValue yamlKeyValue = PsiTreeUtil.getParentOfType(completionParameters.getOriginalPosition(), YAMLKeyValue.class); if(yamlKeyValue != null) { PsiElement compoundValue = yamlKeyValue.getParent(); if(compoundValue instanceof YAMLCompoundValue) { // path and pattern are valid String pattern = YamlHelper.getYamlKeyValueAsString((YAMLCompoundValue) compoundValue, "path", false); if(pattern == null) { pattern = YamlHelper.getYamlKeyValueAsString((YAMLCompoundValue) compoundValue, "pattern", false); } if(pattern != null) { Matcher matcher = Pattern.compile("\\{(\\w+)}").matcher(pattern); while(matcher.find()){ completionResultSet.addElement(LookupElementBuilder.create(matcher.group(1))); } } } } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, final @NotNull CompletionResultSet resultSet) { PsiElement psiElement = parameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } PhpClassCompletionProvider.addClassCompletion(parameters, resultSet, psiElement, false); for( Map.Entry<String, ContainerParameter> entry: ContainerCollectionResolver.getParameters(psiElement.getProject()).entrySet()) { resultSet.addElement( new ParameterLookupElement(entry.getValue(), ParameterPercentWrapInsertHandler.getInstance(), psiElement.getText()) ); } }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } BinaryExpression binaryExpression = PsiTreeUtil.getPrevSiblingOfType(psiElement, BinaryExpression.class); if(binaryExpression == null) { return; } // OK: $response->getStatusCode() == Response::HTTP_BAD_GATEWAY // @TODO: error we are complete outside of context: $response->getStatusCode() == Response::HTTP_BAD_GATEWAY || $response->getStatusCode() == PsiElement leftOperand = binaryExpression.getLeftOperand(); if(!(leftOperand instanceof MethodReference)) { return; } for(ConstantEnumCompletionProvider enumProvider: CONSTANTS_ENUMS) { if(enumProvider.getEnumType() == ConstantEnumCompletionProvider.EnumType.RETURN) { attachLookup(completionResultSet, (MethodReference) leftOperand, enumProvider); } } }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if(psiElement == null|| !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } BinaryExpression binaryExpression = PsiTreeUtil.getPrevSiblingOfType(psiElement, BinaryExpression.class); if(binaryExpression == null) { return; } // OK: $response->getStatusCode() == Response::HTTP_BAD_GATEWAY // @TODO: error we are complete outside of context: $response->getStatusCode() == Response::HTTP_BAD_GATEWAY || $response->getStatusCode() == PsiElement leftOperand = binaryExpression.getLeftOperand(); if(!(leftOperand instanceof MethodReference)) { return; } for(ConstantEnumCompletionProvider enumProvider: CONSTANTS_ENUMS) { if(enumProvider.getEnumType() == ConstantEnumCompletionProvider.EnumType.RETURN) { attachLookup(completionResultSet, (MethodReference) leftOperand, enumProvider); } } }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if (!Symfony2ProjectComponent.isEnabled(psiElement) || !(psiElement.getContext() instanceof StringLiteralExpression)) { return; } MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.StringParameterMatcher(psiElement.getContext(), 0) .withSignature("\\Doctrine\\ORM\\EntityRepository", "createQueryBuilder") .match(); if(methodMatchParameter == null) { return; } for(String type: methodMatchParameter.getMethodReference().getType().getTypes()) { // strip last method call if(type.endsWith(".createQueryBuilder")) { attachClassNames(completionResultSet, type.substring(0, type.length() - ".createQueryBuilder".length())); } } } });
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } MethodMatcher.MethodMatchParameter methodMatchParameter = MatcherUtil.matchPropertyField(psiElement.getContext()); if(methodMatchParameter == null) { return; } QueryBuilderMethodReferenceParser qb = getQueryBuilderParser(methodMatchParameter.getMethodReference()); if(qb == null) { return; } QueryBuilderScopeContext collect = qb.collect(); buildLookupElements(completionResultSet, collect); }
@Override protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet resultSet) { PsiElement position = parameters.getOriginalPosition(); if(position == null || !Symfony2ProjectComponent.isEnabled(position)) { return; } PsiElement element = TwigUtil.getElementOnTwigViewProvider(position); TwigUtil.DomainScope domainScope = TwigUtil.getTwigFileDomainScope(element != null ? element : position); String finalDomain = domainScope.getDomain(); List<LookupElement> collect = TranslationUtil.getTranslationLookupElementsOnDomain(position.getProject(), domainScope.getDomain()) .stream() .map((Function<LookupElement, LookupElement>) lookupElement -> new TranslatorLookupElement(lookupElement.getLookupString(), finalDomain, TwigTranslationFilterInsertHandler.getInstance()) ).collect(Collectors.toList()); resultSet.addAllElements(collect); } });
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if(psiElement == null || !Symfony2ProjectComponent.isEnabled(psiElement)) { return; } Project project = psiElement.getProject(); for( Map.Entry<String, ContainerParameter> entry: ContainerCollectionResolver.getParameters(project).entrySet()) { completionResultSet.addElement( new ParameterLookupPercentElement(entry.getValue()) ); } // %env('foobar')% for (String s : DotEnvUtil.getEnvironmentVariables(project)) { completionResultSet.addElement(new ParameterLookupPercentElement(new ContainerParameter("env(" + s +")", false))); } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { PsiElement position = parameters.getOriginalPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { return; } // wtf: need to prefix the block tag itself. remove this behavior and strip for new Matcher // Find first Identifier "b" char or fallback to empty: // "{% block b", "{% block" String blockNamePrefix = resultSet.getPrefixMatcher().getPrefix(); int spacePos = blockNamePrefix.lastIndexOf(' '); blockNamePrefix = spacePos > 0 ? blockNamePrefix.substring(spacePos + 1) : ""; CompletionResultSet myResultSet = resultSet.withPrefixMatcher(blockNamePrefix); // collect blocks in all related files Pair<Collection<PsiFile>, Boolean> scopedContext = TwigUtil.findScopedFile(position); myResultSet.addAllElements(TwigUtil.getBlockLookupElements( position.getProject(), TwigFileUtil.collectParentFiles(scopedContext.getSecond(), scopedContext.getFirst()) )); } }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if (!Symfony2ProjectComponent.isEnabled(psiElement) || !(psiElement.getContext() instanceof StringLiteralExpression)) { return; } MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.StringParameterMatcher(psiElement.getContext(), 2) .withSignature("\\Doctrine\\ORM\\QueryBuilder", "from") .match(); if(methodMatchParameter == null) { return; } QueryBuilderMethodReferenceParser qb = getQueryBuilderParser(methodMatchParameter.getMethodReference()); if(qb == null) { return; } QueryBuilderScopeContext collect = qb.collect(); buildLookupElements(completionResultSet, collect); }
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if (!Symfony2ProjectComponent.isEnabled(psiElement) || !(psiElement.getContext() instanceof StringLiteralExpression)) { return; } MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.StringParameterMatcher(psiElement.getContext(), 1) .withSignature("\\Doctrine\\ORM\\QueryBuilder", "from") .match(); if(methodMatchParameter == null) { return; } MethodReference methodReference = methodMatchParameter.getMethodReference(); String repoName = PhpElementsUtil.getStringValue(methodReference.getParameters()[0]); if(repoName != null) { attachClassNames(completionResultSet, repoName); } } });
@Override protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement psiElement = completionParameters.getOriginalPosition(); if (!Symfony2ProjectComponent.isEnabled(psiElement) || !(psiElement.getContext() instanceof StringLiteralExpression)) { return; } MethodMatcher.MethodMatchParameter methodMatchParameter = new MethodMatcher.StringParameterMatcher(psiElement.getContext(), 0) .withSignature(JOINS) .match(); if(methodMatchParameter == null) { return; } QueryBuilderMethodReferenceParser qb = getQueryBuilderParser(methodMatchParameter.getMethodReference()); if(qb == null) { return; } QueryBuilderScopeContext collect = qb.collect(); for(Map.Entry<String, List<QueryBuilderRelation>> parameter: collect.getRelationMap().entrySet()) { for(QueryBuilderRelation relation: parameter.getValue()) { completionResultSet.addElement(LookupElementBuilder.create(parameter.getKey() + "." + relation.getFieldName()).withTypeText(relation.getTargetEntity(), true)); } } }
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) { if(!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) { return; } PsiElement element = parameters.getOriginalPosition(); if(element == null) { return; } for(ContainerParameter containerParameter: ContainerCollectionResolver.getParameters(parameters.getPosition().getProject()).values()) { resultSet.addElement(new ParameterLookupElement(containerParameter, ParameterPercentWrapInsertHandler.getInstance(), element.getText())); } for (String s : DotEnvUtil.getEnvironmentVariables(element.getProject())) { resultSet.addElement(new ParameterLookupElement(new ContainerParameter("env(" + s +")", false), ParameterPercentWrapInsertHandler.getInstance(), element.getText())); } } }