From e0fc18e12d2287a35466d424111163c470ef5c45 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 21 Aug 2014 17:19:06 +0400 Subject: [PATCH] revert unwrapping to fix problems with outer elements --- .../lang/xml/XmlEnclosingTagUnwrapper.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java b/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java index 400c822241bf..480174b40cc0 100644 --- a/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java +++ b/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java @@ -20,13 +20,12 @@ import com.intellij.lang.ASTNode; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; import com.intellij.psi.xml.XmlChildRole; import com.intellij.psi.xml.XmlTag; import com.intellij.util.IncorrectOperationException; import com.intellij.xml.XmlBundle; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -65,15 +64,17 @@ public class XmlEnclosingTagUnwrapper implements Unwrapper { @Override public List unwrap(Editor editor, PsiElement element) throws IncorrectOperationException { - final ArrayList toExtract = new ArrayList(); - collectAffectedElements(element, toExtract); - for (int i = 0; i < toExtract.size(); i++) { - PsiElement psiElement = toExtract.get(i); - psiElement = element.getParent().addBefore(psiElement, element); - CodeEditUtil.markToReformat(psiElement.getNode(), true); - toExtract.set(i, psiElement); + final TextRange range = element.getTextRange(); + final ASTNode startTagNameEnd = XmlChildRole.START_TAG_END_FINDER.findChild(element.getNode()); + final ASTNode endTagNameStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(element.getNode()); + + if (endTagNameStart != null) { + editor.getDocument().replaceString(endTagNameStart.getTextRange().getStartOffset(), range.getEndOffset(), ""); + editor.getDocument().replaceString(range.getStartOffset(), startTagNameEnd.getTextRange().getEndOffset(), ""); } - element.delete(); - return toExtract; + else { + editor.getDocument().replaceString(range.getStartOffset(), range.getEndOffset(), ""); + } + return Collections.emptyList(); } }