@Override public boolean isMyContext(@NotNull PsiElement element) { return GoLanguage.INSTANCE.is(element.getLanguage()); } }
@NotNull @Override public Language getLanguage() { return getParent().getLanguage(); } }
private static void addNavigationElements(@NotNull TreeElement root, @NotNull TIntArrayList navigationOffsets, boolean start) { if (root instanceof PsiTreeElementBase) { PsiElement element = ((PsiTreeElementBase)root).getValue(); int offset; if (start) { offset = element.getTextRange().getStartOffset(); if (element.getLanguage().getID().equals("JAVA")) { // HACK: for Java classes and methods, we want to jump to the opening brace int textOffset = element.getTextOffset(); int braceIndex = element.getText().indexOf('{', textOffset - offset); if (braceIndex >= 0) { offset += braceIndex; } } } else { offset = element.getTextRange().getEndOffset() - 1; } if (!navigationOffsets.contains(offset)) { navigationOffsets.add(offset); } } for (TreeElement child : root.getChildren()) { addNavigationElements(child, navigationOffsets, start); } }
private static int findMatchingBlockCommentPair(@NotNull PsiElement element, int pos) { final Language language = element.getLanguage(); final Commenter commenter = LanguageCommenters.INSTANCE.forLanguage(language); final PsiComment comment = PsiTreeUtil.getParentOfType(element, PsiComment.class, false); if (comment != null) { final int ret = findMatchingBlockCommentPair(comment, pos, commenter.getBlockCommentPrefix(), commenter.getBlockCommentSuffix()); if (ret >= 0) { return ret; } if (commenter instanceof CodeDocumentationAwareCommenter) { final CodeDocumentationAwareCommenter docCommenter = (CodeDocumentationAwareCommenter)commenter; return findMatchingBlockCommentPair(comment, pos, docCommenter.getDocumentationCommentPrefix(), docCommenter.getDocumentationCommentSuffix()); } } return -1; }
@Override public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement psiElement) { return psiElement.getLanguage().equals(PhpLanguage.INSTANCE) && getServicesInScope(psiElement).size() > 0; }
@NotNull @Override public List<? extends GotoRelatedItem> getItems(@NotNull PsiElement psiElement) { if(!Symfony2ProjectComponent.isEnabled(psiElement)) { return Collections.emptyList(); } if(psiElement.getLanguage() != PhpLanguage.INSTANCE) { return Collections.emptyList(); } Method method = PsiTreeUtil.getParentOfType(psiElement, Method.class); if(method == null || !method.getName().endsWith("Action")) { return Collections.emptyList(); } return ControllerMethodLineMarkerProvider.getGotoRelatedItems(method); }
@Nullable public static String findModelNameInScope(@NotNull PsiElement psiElement) { if(psiElement.getLanguage().equals(XMLLanguage.INSTANCE)) { PsiElement firstParent = PsiTreeUtil.findFirstParent(psiElement, psiElement1 -> { if (!(psiElement1 instanceof XmlTag)) {
public void assertLineMarkerIsEmpty(@NotNull PsiElement psiElement) { final List<PsiElement> elements = collectPsiElementsRecursive(psiElement); for (LineMarkerProvider lineMarkerProvider : LineMarkerProviders.INSTANCE.allForLanguage(psiElement.getLanguage())) { Collection<LineMarkerInfo> lineMarkerInfos = new ArrayList<LineMarkerInfo>(); lineMarkerProvider.collectSlowLineMarkers(elements, lineMarkerInfos); if(lineMarkerInfos.size() > 0) { fail(String.format("Fail that line marker is empty because it matches '%s'", lineMarkerProvider.getClass())); } } }
public void assertLineMarker(@NotNull PsiElement psiElement, @NotNull LineMarker.Assert assertMatch) { final List<PsiElement> elements = collectPsiElementsRecursive(psiElement); for (LineMarkerProvider lineMarkerProvider : LineMarkerProviders.INSTANCE.allForLanguage(psiElement.getLanguage())) { Collection<LineMarkerInfo> lineMarkerInfos = new ArrayList<LineMarkerInfo>(); lineMarkerProvider.collectSlowLineMarkers(elements, lineMarkerInfos); if(lineMarkerInfos.size() == 0) { continue; } for (LineMarkerInfo lineMarkerInfo : lineMarkerInfos) { if(assertMatch.match(lineMarkerInfo)) { return; } } } fail(String.format("Fail that '%s' matches on of '%s' PsiElements", assertMatch.getClass(), elements.size())); }
@Override public void visitElement(PsiElement element) { if(element.getLanguage() == PhpLanguage.INSTANCE) { // PHP MethodReference methodReference = PsiElementUtils.getMethodReferenceWithFirstStringParameter(element); if (methodReference != null && PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, ServiceContainerUtil.SERVICE_GET_SIGNATURES)) { String serviceName = PhpElementsUtil.getFirstArgumentStringValue(methodReference); if(serviceName != null && StringUtils.isNotBlank(serviceName)) { if(!ContainerCollectionResolver.hasServiceNames(element.getProject(), serviceName)) { holder.registerProblem(element, INSPECTION_MESSAGE, ProblemHighlightType.GENERIC_ERROR_OR_WARNING); } } } } else if(element.getLanguage() == YAMLLanguage.INSTANCE) { // yaml if(YamlElementPatternHelper.getServiceDefinition().accepts(element) && YamlElementPatternHelper.getInsideServiceKeyPattern().accepts(element)) { String serviceName = YamlHelper.trimSpecialSyntaxServiceName(PsiElementUtils.getText(element)); // dont mark "@", "@?", "@@" escaping and expressions if(serviceName.length() > 2 && !serviceName.startsWith("=") && !serviceName.startsWith("@")) { if(!ContainerCollectionResolver.hasServiceNames(element.getProject(), serviceName)) { holder.registerProblem(element, INSPECTION_MESSAGE, ProblemHighlightType.GENERIC_ERROR_OR_WARNING); } } } } super.visitElement(element); } }
@Nullable @Override public UsageType getUsageType(PsiElement element) { if (element.getLanguage() == PodLanguage.INSTANCE) { return DOCUMENT_USAGE; } return null; } }
@Override protected boolean canProcess(PsiElement element, TextRange range) { return element.getLanguage().is(Mason2Language.INSTANCE); } }
@NotNull @Override public Language getLanguage() { return getDelegate().getLanguage(); }
@Override protected void insertCodeAfterElement(PsiElement anchor, String code, Editor editor) { if (code == null) { return; } if (anchor.getLanguage() == Mason2TemplatingLanguage.INSTANCE) { code = "<%perl>\n" + code + "\n</%perl>\n"; } super.insertCodeAfterElement(anchor, code, editor); } }
@NotNull @Override public Language getLanguage() { return getParent().getLanguage(); } }
@NotNull @Override public Language getLanguage() { return getParent().getLanguage(); } }
@Override public boolean isMyContext(@NotNull PsiElement element) { return CypherLanguage.INSTANCE.is(element.getLanguage()); } }
@Override protected boolean canProcess(PsiElement element, TextRange range) { return element.getLanguage().is(EmbeddedPerlLanguage.INSTANCE); } }
@Override protected boolean canProcess(PsiElement element, TextRange range) { return element.getLanguage().is(MojoliciousLanguage.INSTANCE); } }
@Override protected boolean canProcess(PsiElement element, TextRange range) { return element.getLanguage().is(HTMLMasonLanguage.INSTANCE); } }