diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java
index 91d6c9fb3ab1..b82c5b4c67f4 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java
@@ -182,7 +182,10 @@ public class CaretModelImpl implements CaretModel, PrioritizedDocumentListener,
validateCallContext();
moveToLogicalPosition(myEditor.offsetToLogicalPosition(offset), locateBeforeSoftWrap);
if (!myEditor.offsetToLogicalPosition(myOffset).equals(myEditor.offsetToLogicalPosition(offset))) {
- LOG.error("caret moved to wrong offset. Requested:" + offset + " but actual:" + myOffset);
+ LOG.error(
+ "caret moved to wrong offset. Requested:" + offset + " but actual:" + myOffset
+ + ". Soft wraps data: " + myEditor.getSoftWrapModel() + ", folding data: " + myEditor.getFoldingModel()
+ + ", document:\n" + myEditor.getDocument().getText());
}
}
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 061242bced1e..8d12d6f0143b 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
@@ -38,6 +38,7 @@ import com.intellij.openapi.editor.ex.PrioritizedDocumentListener;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.util.Arrays;
@@ -219,6 +220,7 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList
return myFoldTree.fetchAllRegions();
}
+ @Nullable
public FoldRegion getCollapsedRegionAtOffset(int offset) {
return myFoldTree.fetchOutermost(offset);
}
@@ -227,6 +229,7 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList
return myFoldTree.getLastTopLevelIndexBefore(offset);
}
+ @Nullable
public FoldRegion getFoldingPlaceholderAt(Point p) {
assertReadAccess();
LogicalPosition pos = myEditor.xyToLogicalPosition(p);
@@ -410,10 +413,12 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList
return myFoldTree.getFoldedLinesCountBefore(offset);
}
+ @Nullable
public FoldRegion[] fetchTopLevel() {
return myFoldTree.fetchTopLevel();
}
+ @Nullable
public FoldRegion fetchOutermost(int offset) {
return myFoldTree.fetchOutermost(offset);
}
@@ -478,4 +483,9 @@ public class FoldingModelImpl implements FoldingModelEx, PrioritizedDocumentList
listener.onFoldRegionStateChange(foldRegion);
}
}
+
+ @Override
+ public String toString() {
+ return Arrays.toString(myFoldTree.fetchTopLevel());
+ }
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SoftWrapModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SoftWrapModelImpl.java
index a048f2cf7cc0..1ed621d490a9 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SoftWrapModelImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SoftWrapModelImpl.java
@@ -654,6 +654,11 @@ public class SoftWrapModelImpl implements SoftWrapModelEx, PrioritizedDocumentLi
}
}
+ @Override
+ public String toString() {
+ return myDataMapper.toString();
+ }
+
/**
* Defines generic interface for the command that may be proceeded in both 'soft wraps aware' and
* 'soft wraps unaware' modes.