From fae1550d71513353741341ec8ece24e89da1ca75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Tue, 20 Sep 2016 22:23:00 +0200 Subject: [PATCH] Revert: IDEA-93649 Custom regions in XML (81043348f79f) --- .../lang/folding/CustomFoldingBuilder.java | 4 --- .../VisualStudioCustomFoldingProvider.java | 4 +-- .../src/com/intellij/xml/XmlFoldingTest.java | 2 -- xml/tests/testData/folding/customRegions.html | 15 ---------- .../intellij/lang/XmlCodeFoldingBuilder.java | 30 +++++++------------ 5 files changed, 13 insertions(+), 42 deletions(-) delete mode 100644 xml/tests/testData/folding/customRegions.html diff --git a/platform/core-api/src/com/intellij/lang/folding/CustomFoldingBuilder.java b/platform/core-api/src/com/intellij/lang/folding/CustomFoldingBuilder.java index 111b6cc85b82..fde4177b83ac 100644 --- a/platform/core-api/src/com/intellij/lang/folding/CustomFoldingBuilder.java +++ b/platform/core-api/src/com/intellij/lang/folding/CustomFoldingBuilder.java @@ -32,8 +32,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import static com.intellij.lang.folding.CompositeFoldingBuilder.FOLDING_BUILDER; - /** * Builds custom folding regions. If custom folding is supported for a language, its FoldingBuilder must be inherited from this class. * @@ -99,8 +97,6 @@ public abstract class CustomFoldingBuilder extends FoldingBuilderEx implements P ASTNode startNode = localFoldingStack.pop(); int startOffset = startNode.getTextRange().getStartOffset(); TextRange range = new TextRange(startOffset, child.getTextRange().getEndOffset()); - startNode.getPsi().putUserData(FOLDING_BUILDER, this); // Required by CompositeFoldingBuilder when getting info from the original - // folding builder descriptors.add(new FoldingDescriptor(startNode, range)); Set nodeSet = ourCustomRegionElements.get(); nodeSet.add(startNode); diff --git a/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java b/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java index b3bdd2578f81..8aea576691a7 100644 --- a/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java +++ b/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java @@ -24,7 +24,7 @@ import com.intellij.lang.folding.CustomFoldingProvider; public class VisualStudioCustomFoldingProvider extends CustomFoldingProvider { @Override public boolean isCustomRegionStart(String elementText) { - return elementText.contains("region") && elementText.matches("[/*#-]*\\s*region.*"); + return elementText.contains("region") && elementText.matches("..?\\s*region.*"); } @Override @@ -34,7 +34,7 @@ public class VisualStudioCustomFoldingProvider extends CustomFoldingProvider { @Override public String getPlaceholderText(String elementText) { - return elementText.replaceFirst("[/*#-]*\\s*region(.*)","$1").trim(); + return elementText.replaceFirst("..?\\s*region(.*)","$1").trim(); } @Override diff --git a/xml/tests/src/com/intellij/xml/XmlFoldingTest.java b/xml/tests/src/com/intellij/xml/XmlFoldingTest.java index 27d8fe6132dc..6edd92831436 100644 --- a/xml/tests/src/com/intellij/xml/XmlFoldingTest.java +++ b/xml/tests/src/com/intellij/xml/XmlFoldingTest.java @@ -35,8 +35,6 @@ public class XmlFoldingTest extends LightPlatformCodeInsightFixtureTestCase { public void testDataUri() throws Throwable { doTest(); } - public void testCustomRegions() throws Throwable { doTest(); } - private void doTest() throws Throwable { doTest(".html"); } diff --git a/xml/tests/testData/folding/customRegions.html b/xml/tests/testData/folding/customRegions.html deleted file mode 100644 index a8c37734cdc2..000000000000 --- a/xml/tests/testData/folding/customRegions.html +++ /dev/null @@ -1,15 +0,0 @@ -> -> -> - First - > - -> - Second - > -> - Third - > - -> -> \ No newline at end of file diff --git a/xml/xml-psi-impl/src/com/intellij/lang/XmlCodeFoldingBuilder.java b/xml/xml-psi-impl/src/com/intellij/lang/XmlCodeFoldingBuilder.java index 98af12fea500..20afcf681f10 100644 --- a/xml/xml-psi-impl/src/com/intellij/lang/XmlCodeFoldingBuilder.java +++ b/xml/xml-psi-impl/src/com/intellij/lang/XmlCodeFoldingBuilder.java @@ -16,7 +16,6 @@ package com.intellij.lang; -import com.intellij.lang.folding.CustomFoldingBuilder; import com.intellij.lang.folding.FoldingBuilder; import com.intellij.lang.folding.FoldingDescriptor; import com.intellij.lang.folding.LanguageFolding; @@ -41,18 +40,17 @@ import com.intellij.xml.util.XmlTagUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; -public abstract class XmlCodeFoldingBuilder extends CustomFoldingBuilder implements DumbAware { +public abstract class XmlCodeFoldingBuilder implements FoldingBuilder, DumbAware { private static final TokenSet XML_ATTRIBUTE_SET = TokenSet.create(XmlElementType.XML_ATTRIBUTE); private static final int MIN_TEXT_RANGE_LENGTH = 3; @Override - public void buildLanguageFoldRegions(@NotNull List foldings, - @NotNull PsiElement psiElement, - @NotNull Document document, - boolean quick - ) { + @NotNull + public FoldingDescriptor[] buildFoldRegions(@NotNull ASTNode node, @NotNull Document document) { + final PsiElement psiElement = node.getPsi(); XmlDocument xmlDocument = null; if (psiElement instanceof XmlFile) { @@ -67,11 +65,15 @@ public abstract class XmlCodeFoldingBuilder extends CustomFoldingBuilder impleme if (rootTag == null) { rootTag = xmlDocument; } + List foldings = null; if (rootTag != null) { + foldings = new ArrayList<>(); doAddForChildren(xmlDocument, foldings, document); } + + return foldings != null ? foldings.toArray(new FoldingDescriptor[foldings.size()]):FoldingDescriptor.EMPTY; } protected void addElementsToFold(List foldings, XmlElement tag, Document document) { @@ -222,7 +224,7 @@ public abstract class XmlCodeFoldingBuilder extends CustomFoldingBuilder impleme } @Override - public String getLanguagePlaceholderText(@NotNull ASTNode node, @NotNull TextRange range) { + public String getPlaceholderText(@NotNull ASTNode node) { final PsiElement psi = node.getPsi(); if (psi instanceof XmlAttribute && "src".equalsIgnoreCase(((XmlAttribute)psi).getName())) { return "data:"; @@ -263,7 +265,7 @@ public abstract class XmlCodeFoldingBuilder extends CustomFoldingBuilder impleme } @Override - public boolean isRegionCollapsedByDefault(@NotNull ASTNode node) { + public boolean isCollapsedByDefault(@NotNull ASTNode node) { final PsiElement psi = node.getPsi(); final XmlCodeFoldingSettings foldingSettings = getFoldingSettings(); return (psi instanceof XmlTag && foldingSettings.isCollapseXmlTags()) @@ -291,14 +293,4 @@ public abstract class XmlCodeFoldingBuilder extends CustomFoldingBuilder impleme } protected abstract XmlCodeFoldingSettings getFoldingSettings(); - - @Override - protected boolean isCustomFoldingRoot(@NotNull ASTNode node) { - return node.getElementType() == XmlElementType.XML_TAG; - } - - @Override - protected boolean isCustomFoldingCandidate(@NotNull ASTNode node) { - return node.getElementType() == XmlTokenType.XML_COMMENT_CHARACTERS; - } }