diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java index 7aa372079d43..bf10e3ed18b0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java @@ -24,7 +24,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.registry.Registry; import com.intellij.psi.*; import com.intellij.psi.impl.DebugUtil; -import com.intellij.psi.impl.source.tree.injected.FoldingModelWindow; +import com.intellij.psi.impl.source.tree.injected.FoldingRegionWindow; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; @@ -171,7 +171,8 @@ public class FoldingUpdate { }); EditorFoldingInfo info = EditorFoldingInfo.get(editor); for (FoldRegion region : editor.getFoldingModel().getAllFoldRegions()) { - if (FoldingModelWindow.isOutdatedInjectedRegion(region)) { + FoldingRegionWindow injectedRegion = FoldingRegionWindow.getInjectedRegion(region); + if (injectedRegion != null && !injectedRegion.isValid()) { info.removeRegion(region); } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingModelWindow.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingModelWindow.java index 976b5e804ac5..95b1ff1bfe75 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingModelWindow.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingModelWindow.java @@ -24,8 +24,7 @@ import java.util.List; /** * @author cdr */ -@ApiStatus.Internal -public class FoldingModelWindow implements FoldingModelEx, ModificationTracker { +class FoldingModelWindow implements FoldingModelEx, ModificationTracker { private final FoldingModelEx myDelegate; private final DocumentWindow myDocumentWindow; private final EditorWindow myEditorWindow; @@ -107,11 +106,6 @@ public class FoldingModelWindow implements FoldingModelEx, ModificationTracker { return window != null && window.getEditor() == myEditorWindow ? window : null; } - public static boolean isOutdatedInjectedRegion(@NotNull FoldRegion hostRegion) { - FoldingRegionWindow window = hostRegion.getUserData(FOLD_REGION_WINDOW); - return window != null && !((DocumentWindow)window.getEditor().getDocument()).isValid(); - } - @Override public void runBatchFoldingOperation(@NotNull Runnable operation, boolean allowMovingCaret, boolean keepRelativeCaretPosition) { myDelegate.runBatchFoldingOperation(operation, allowMovingCaret, keepRelativeCaretPosition); @@ -138,7 +132,7 @@ public class FoldingModelWindow implements FoldingModelEx, ModificationTracker { return FoldRegion.EMPTY_ARRAY; //todo implement } - private static final Key FOLD_REGION_WINDOW = Key.create("FOLD_REGION_WINDOW"); + static final Key FOLD_REGION_WINDOW = Key.create("FOLD_REGION_WINDOW"); @Override public FoldRegion createFoldRegion(int startOffset, int endOffset, @NotNull String placeholder, FoldingGroup group, boolean neverExpands) { TextRange hostRange = myDocumentWindow.injectedToHost(new TextRange(startOffset, endOffset)); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingRegionWindow.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingRegionWindow.java index 1525a2b8f6d4..be89cf1d76a4 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingRegionWindow.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/FoldingRegionWindow.java @@ -76,4 +76,8 @@ public class FoldingRegionWindow extends RangeMarkerWindow implements FoldRegion public void setPlaceholderText(@NotNull String text) { myHostRegion.setPlaceholderText(text); } + + public static FoldingRegionWindow getInjectedRegion(@NotNull FoldRegion hostRegion) { + return hostRegion.getUserData(FoldingModelWindow.FOLD_REGION_WINDOW); + } }