summaryrefslogtreecommitdiff
path: root/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java')
-rw-r--r--xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java29
1 files changed, 21 insertions, 8 deletions
diff --git a/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java b/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java
index b40ca4b64f60..480174b40cc0 100644
--- a/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java
+++ b/xml/impl/src/com/intellij/lang/xml/XmlEnclosingTagUnwrapper.java
@@ -16,18 +16,18 @@
package com.intellij.lang.xml;
import com.intellij.codeInsight.unwrap.Unwrapper;
+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.xml.XmlChildRole;
import com.intellij.psi.xml.XmlTag;
-import com.intellij.xml.XmlBundle;
-import com.intellij.openapi.editor.Editor;
-import com.intellij.openapi.util.TextRange;
import com.intellij.util.IncorrectOperationException;
-import com.intellij.lang.ASTNode;
+import com.intellij.xml.XmlBundle;
-import java.util.Set;
-import java.util.List;
import java.util.Collections;
+import java.util.List;
+import java.util.Set;
public class XmlEnclosingTagUnwrapper implements Unwrapper {
@Override
@@ -45,8 +45,21 @@ public class XmlEnclosingTagUnwrapper implements Unwrapper {
}
@Override
- public PsiElement collectAffectedElements(PsiElement e, List<PsiElement> toExtract) {
- return e;
+ public PsiElement collectAffectedElements(PsiElement element, List<PsiElement> toExtract) {
+ 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());
+
+ int start = startTagNameEnd != null ? startTagNameEnd.getTextRange().getEndOffset() : range.getStartOffset();
+ int end = endTagNameStart != null ? endTagNameStart.getTextRange().getStartOffset() : range.getEndOffset();
+
+ for (PsiElement child : element.getChildren()) {
+ final TextRange childRange = child.getTextRange();
+ if (childRange.getStartOffset() >= start && childRange.getEndOffset() <= end) {
+ toExtract.add(child);
+ }
+ }
+ return element;
}
@Override