public void extractNewLine(PsiElement from) { PsiElement newLine = GoElementFactory.createNewLine(from.getProject()); if (myIsEffective) { newLine = from.getParent().addBefore(newLine, from); } if (newLine != null) { addElementToExtract(newLine); } }
currentPackageName.getParent().addBefore(identifier, currentPackageName);
@Override public PsiElement addBefore(@NotNull PsiElement element, PsiElement anchor) throws IncorrectOperationException { return getDelegate().addBefore(element, anchor); }
@Override protected PsiElement insertElement(@NotNull PsiElement newElement, @NotNull PsiElement anchorElement, @NotNull PsiElement anchorContainer) { if (getMyAnchor() == anchorContainer) // first element being added before { return anchorContainer.addBefore(newElement, anchorElement); } else // the rest if added after { return super.insertElement(newElement, anchorElement, anchorContainer); } } }
PsiElement afterAddHandler(PsiElement element, PsiElement anchor) { final PsiElement newLineNode = PsiParserFacade.SERVICE.getInstance(element.getProject()).createWhiteSpaceFromText("\n\n"); anchor.getParent().addBefore(newLineNode, anchor); return anchor; }
private static void replaceExpression(Project project, BnfExpression[] oldExpression, PsiElement id) { PsiElement parent = oldExpression[0].getParent(); parent.addBefore(BnfElementFactory.createRuleFromText(project, "a::="+id.getText()).getExpression(), oldExpression[0]); parent.deleteChildRange(oldExpression[0], oldExpression[oldExpression.length - 1]); //BnfExpressionOptimizer.optimize(parent); }
/** * Replaces the priginal element with the replacement. * * @param original The original element which should be replaced. * @param replacement The new element * @return The replaces element. Depending on the context of the original element it either the original element or the replacement element. */ public static <T extends PsiElement> T replaceElement(T original, PsiElement replacement) throws IncorrectOperationException { try { return (T) original.replace(replacement); } catch (IncorrectOperationException e) { //failed, try another way } catch (UnsupportedOperationException e) { //failed, try another way } PsiElement parent = original.getParent(); if (parent != null) { PsiElement inserted = parent.addBefore(replacement, original); original.delete(); return (T) inserted; } else { //last try, not optimal original.getNode().replaceAllChildrenToChildrenOf(replacement.getNode()); return original; } }
public static BnfRule addNextRule(Project project, BnfRule currentRule, String newRuleText) { BnfRule addedRule = (BnfRule)currentRule.getParent().addAfter(BnfElementFactory.createRuleFromText(project, newRuleText), currentRule); currentRule.getParent().addBefore(BnfElementFactory.createLeafFromText(project, "\n"), addedRule); if (endsWithSemicolon(currentRule)) { addedRule.addBefore(BnfElementFactory.createLeafFromText(project, ";"), null); if (currentRule.getNextSibling() instanceof PsiWhiteSpace) { currentRule.getParent().addAfter(BnfElementFactory.createLeafFromText(project, "\n"), addedRule); } } return addedRule; }
space = PodElementFactory.getSpace(formatterBlock.getProject()); formatterBlock.addBefore(space, closeAngles); insertedChars++;