diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java index c5000628bcd4..08bf0211dbc8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java @@ -465,21 +465,12 @@ public class CachingSoftWrapDataMapper implements SoftWrapDataMapper, SoftWrapAw || (beforeLast.visualLine + 1 == last.visualLine && last.startOffset - beforeLast.endOffset > 1) || last.startOffset > myEditor.getDocument().getTextLength()) { - CharSequence editorState = ""; - if (myEditor instanceof EditorImpl) { - editorState = ((EditorImpl)myEditor).dumpState(); - } - LOG.error( - "Detected invalid soft wraps cache update", - String.format( - "Event: %s, normal: %b.%n%nTail cache entries: %s%n%nAffected by change cache entries: %s%n%nBefore change state: %s%n%n" - + "After change state: %s%n%nEditor state: %s", - event, normal, myNotAffectedByUpdateTailCacheEntries, myAffectedByUpdateCacheEntries, - myBeforeChangeState, myAfterChangeState, editorState - ) - ); + logInvalidUpdate(event, normal); } } + if (!myCache.isEmpty() && myEditor.getDocument().getTextLength() == 0) { + logInvalidUpdate(event, normal); + } myAffectedByUpdateCacheEntries.clear(); myNotAffectedByUpdateTailCacheEntries.clear(); @@ -492,6 +483,22 @@ public class CachingSoftWrapDataMapper implements SoftWrapDataMapper, SoftWrapAw myBeforeChangeState.cacheShouldBeUpdated = false; } + private void logInvalidUpdate(@NotNull IncrementalCacheUpdateEvent event, boolean normal) { + CharSequence editorState = ""; + if (myEditor instanceof EditorImpl) { + editorState = ((EditorImpl)myEditor).dumpState(); + } + LOG.error( + "Detected invalid soft wraps cache update", + String.format( + "Event: %s, normal: %b.%n%nTail cache entries: %s%n%nAffected by change cache entries: %s%n%nBefore change state: %s%n%n" + + "After change state: %s%n%nEditor state: %s", + event, normal, myNotAffectedByUpdateTailCacheEntries, myAffectedByUpdateCacheEntries, + myBeforeChangeState, myAfterChangeState, editorState + ) + ); + } + @Override public void reset() { myCache.clear(); |