From c99ec22c8c65a885a5bd5b0b56508146220c7acc Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Tue, 8 Feb 2011 14:01:58 +0300 Subject: [PATCH] IDEA-65206 Soft wraps: Correct 'replace text' processing Cached fold regions data is dropped on bulk document change initiated by 'replace' action now --- .../codeInsight/folding/impl/EditorFoldingInfo.java | 6 ++++++ .../com/intellij/injected/editor/FoldingModelWindow.java | 5 +++++ .../src/com/intellij/openapi/editor/ex/FoldingModelEx.java | 2 ++ .../com/intellij/openapi/editor/impl/FoldingModelImpl.java | 1 + 4 files changed, 14 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java index e7460e1abe13..c2dd8d88df53 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java @@ -19,6 +19,8 @@ package com.intellij.codeInsight.folding.impl; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.FoldRegion; +import com.intellij.openapi.editor.FoldingModel; +import com.intellij.openapi.editor.ex.FoldingModelEx; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; @@ -97,6 +99,10 @@ public class EditorFoldingInfo { if (info != null) { info.dispose(); } + FoldingModel foldingModel = editor.getFoldingModel(); + if (foldingModel instanceof FoldingModelEx) { + ((FoldingModelEx)foldingModel).rebuild(); + } editor.putUserData(KEY, null); } } diff --git a/platform/lang-impl/src/com/intellij/injected/editor/FoldingModelWindow.java b/platform/lang-impl/src/com/intellij/injected/editor/FoldingModelWindow.java index 9128fbb58f92..0f9735852adc 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/FoldingModelWindow.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/FoldingModelWindow.java @@ -147,4 +147,9 @@ public class FoldingModelWindow implements FoldingModelEx{ public boolean removeListener(@NotNull FoldingListener listener) { return myDelegate.removeListener(listener); } + + @Override + public void rebuild() { + myDelegate.rebuild(); + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/FoldingModelEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/FoldingModelEx.java index efdeae2a7a2c..4c612af11df1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/FoldingModelEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/FoldingModelEx.java @@ -49,4 +49,6 @@ public interface FoldingModelEx extends FoldingModel { boolean addListener(@NotNull FoldingListener listener); boolean removeListener(@NotNull FoldingListener listener); + + void rebuild(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java index 53920ca66252..061242bced1e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java @@ -397,6 +397,7 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList } } + @Override public void rebuild() { myFoldTree.rebuild(); }