@Override public int getStartOffsetInParent() { PsiElement mirror = getMirror(); int startOffsetInParent = -1; if (mirror != null) { startOffsetInParent = mirror.getStartOffsetInParent(); } return startOffsetInParent; }
public GoReference(@NotNull GoReferenceExpressionBase o) { super(o, TextRange.from(o.getIdentifier().getStartOffsetInParent(), o.getIdentifier().getTextLength())); }
public GoTypeReference(@NotNull GoTypeReferenceExpression o) { super(o, TextRange.from(o.getIdentifier().getStartOffsetInParent(), o.getIdentifier().getTextLength())); myInsideInterfaceType = myElement.getParent() instanceof GoMethodSpec; }
/** * Handles QuickFix action invoked on {@link IgnoreEntry}. * * @param project the {@link Project} containing the working file * @param psiFile the {@link PsiFile} containing handled entry * @param startElement the {@link IgnoreEntry} that will be removed * @param endElement the {@link PsiElement} which is ignored in invoked action */ @Override public void invoke(@NotNull Project project, @NotNull PsiFile psiFile, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { if (startElement instanceof IgnoreEntry) { Document document = PsiDocumentManager.getInstance(project).getDocument(psiFile); if (document != null) { int start = startElement.getStartOffsetInParent(); String text = startElement.getText(); String fixed = getFixedPath(text); document.replaceString(start, start + text.length(), fixed); } } }
@Override public void visitFunctionDeclaration(@NotNull GoFunctionDeclaration o) { if (o.isBlank()) return; GoFile file = o.getContainingFile(); String name = o.getName(); if (!canRun(name)) return; if (GoConstants.MAIN.equals(file.getPackageName()) && GoConstants.MAIN.equals(name)) return; if (GoConstants.INIT.equals(name)) return; if (GoTestFinder.isTestFile(file) && GoTestFunctionType.fromName(name) != null) return; if (ReferencesSearch.search(o, o.getUseScope()).findFirst() == null) { PsiElement id = o.getIdentifier(); TextRange range = TextRange.from(id.getStartOffsetInParent(), id.getTextLength()); holder.registerProblem(o, "Unused function <code>#ref</code> #loc", ProblemHighlightType.LIKE_UNUSED_SYMBOL, range, new GoDeleteQuickFix("Delete function", GoFunctionDeclaration.class), new GoRenameToBlankQuickFix(o)); } } };
int op = ((GoShortVarDeclaration)parent).getVarAssign().getStartOffsetInParent(); if (element.getStartOffsetInParent() < op) { return true;
public PerlFormattingInsertAfter(@NotNull PsiElement fromElement, @NotNull PsiElement toElement, @NotNull PsiElement anchorElement) { assert fromElement.getParent() == toElement.getParent() : "PSI elements range must be under same parent"; assert fromElement.getStartOffsetInParent() <= toElement.getStartOffsetInParent() : "From element must came first"; myFromElement = fromElement; myToElement = toElement; myAnchor = anchorElement; }
public PerlFormattingRemove(@NotNull PsiElement myFromElement, @NotNull PsiElement myToElement) { assert myFromElement.getParent() == myToElement.getParent() : "Psi elements range must be under same parent"; assert myFromElement.getStartOffsetInParent() <= myToElement.getStartOffsetInParent() : "From element must came first"; this.myFromElement = myFromElement; this.myToElement = myToElement; }
@Override public int getStartOffsetInParent() { return getDelegate().getStartOffsetInParent(); }
public PerlFormattingReplace(@NotNull PsiElement mySourceFromElement, @NotNull PsiElement mySourceToElement, @NotNull PsiElement myTargetFromElement, @NotNull PsiElement myTargetToElement) { assert mySourceFromElement.getParent() == mySourceToElement.getParent() : "Source PSI elements range must be under same parent"; assert mySourceFromElement.getStartOffsetInParent() <= mySourceToElement.getStartOffsetInParent() : "Source from element must come first"; this.mySourceFromElement = mySourceFromElement; this.mySourceToElement = mySourceToElement; assert myTargetFromElement.getParent() == myTargetToElement.getParent() : "Target PSI elements range must be under same parent"; assert myTargetFromElement.getStartOffsetInParent() <= myTargetToElement.getStartOffsetInParent() : "Targtet from element must come first"; this.myTargetFromElement = myTargetFromElement; this.myTargetToElement = myTargetToElement; }
@NotNull @TestOnly public String getConditionText() { return Objects.requireNonNull(getCondition()).getText() .substring(0, myLastConditionElement.getStartOffsetInParent() + myLastConditionElement.getTextLength()); }
@NotNull @Override public TextRange getRangeInElement(@NotNull BashCommand cmd) { final PsiElement element = cmd.commandElement(); if (element == null) { return TextRange.from(0, cmd.getTextLength()); } return TextRange.from(element.getStartOffsetInParent(), element.getTextLength()); } }
@NotNull @Override public TextRange getRangeInElement(@NotNull PsiElement element) { PsiElement firstChild = element.getFirstChild(); if (firstChild instanceof BashCharSequence) { return ((BashCharSequence) firstChild).getTextContentRange().shiftRight(firstChild.getStartOffsetInParent()); } return TextRange.from(0, element.getTextLength()); } }
@Override public PsiReference[] computeReferences() { List<PsiReference> references = new ArrayList<>(); final PodLinkDescriptor descriptor = getLinkDescriptor(); if (descriptor != null && !descriptor.isUrl()) { PsiElement contentBlock = getContentBlock(); if (contentBlock != null) { int rangeOffset = contentBlock.getStartOffsetInParent(); // file reference TextRange fileRange = descriptor.getFileIdTextRangeInLink(); if (fileRange != null && !fileRange.isEmpty()) { references.add(new PodLinkToFileReference(this, fileRange.shiftRight(rangeOffset))); } // section reference TextRange sectionRange = descriptor.getSectionTextRangeInLink(); if (sectionRange != null && !sectionRange.isEmpty()) { references.add(new PodLinkToSectionReference(this, sectionRange.shiftRight(rangeOffset))); } } } references.addAll(Arrays.asList(ReferenceProvidersRegistry.getReferencesFromProviders(this))); return references.toArray(new PsiReference[references.size()]); }
@Override public SoyPsiElement handleContentChange(SoyPsiElement element, TextRange range, String newContent) throws IncorrectOperationException { CompositeElement attrNode = (CompositeElement)element.getNode(); final ASTNode valueNode = attrNode.findLeafElementAt(range.getStartOffset()); final PsiElement elementToReplace = valueNode.getPsi(); String text; text = elementToReplace.getText(); final int offsetInParent = elementToReplace.getStartOffsetInParent(); String textBeforeRange = text.substring(0, range.getStartOffset() - offsetInParent); String textAfterRange = text.substring(range.getEndOffset() - offsetInParent, text.length()); text = textBeforeRange + newContent + textAfterRange; final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(attrNode); final LeafElement newValueElement = Factory.createSingleLeafElement(valueNode.getElementType(), text, charTableByTree, element.getManager()); attrNode.replaceChildInternal(valueNode, newValueElement); return element; } }
@Override public void visitPodFormatterL(@NotNull PodFormatterL o) { PodLinkDescriptor descriptor = o.getLinkDescriptor(); if (descriptor != null && !descriptor.isUrl() && descriptor.getSection() != null) { PsiElement contentBlock = o.getContentBlock(); TextRange sectionRange = descriptor.getSectionTextRangeInLink(); if (contentBlock != null && sectionRange != null) { if (isSectionLegacy(contentBlock.getText(), sectionRange)) { holder.registerProblem(o, "Section \"" + descriptor.getSection() + "\" should have a slash before it", ProblemHighlightType.LIKE_DEPRECATED, sectionRange.shiftRight(contentBlock.getStartOffsetInParent())); } } } super.visitPodFormatterL(o); }
for (PsiReference reference : references) { TextRange refRange = reference.getRangeInElement(); if (refRange.contains(position.getStartOffsetInParent())) { Project project = position.getProject();
new PsiPolyVariantReferenceBase<BnfListEntry>(o, TextRange.from(id.getStartOffsetInParent(), id.getTextLength())) {
PsiElement parent = templatePair.getParent(); String parentText = parent.getText(); insertionPoint = parent.getTextOffset() + parentText.lastIndexOf('\n', templatePair.getStartOffsetInParent()) + 1; insertionText = "/**\n * @param " + parameterName + "\n */\n";
PsiElement parent = templatePair.getParent(); String parentText = parent.getText(); insertionPoint = parent.getTextOffset() + parentText.lastIndexOf('\n', templatePair.getStartOffsetInParent()) + 1; insertionText = "/**\n * @param " + parameterName + "\n */\n";