summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java')
-rw-r--r--platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretModelImpl.java15
1 files changed, 11 insertions, 4 deletions
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 36fbeae94c9b..762aaaa807d4 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
@@ -118,11 +118,18 @@ public class CaretModelImpl implements CaretModel, PrioritizedDocumentListener,
@Override
public void updateFinished(@NotNull Document doc) {
if (doc != myEditor.getDocument() || myIsInUpdate) return;
- if (savedBeforeBulkCaretMarker != null && savedBeforeBulkCaretMarker.isValid()
- && savedBeforeBulkCaretMarker.getStartOffset() != myOffset && !myReportCaretMoves) {
- moveToOffset(savedBeforeBulkCaretMarker.getStartOffset());
+ LOG.assertTrue(!myReportCaretMoves);
+
+ if (savedBeforeBulkCaretMarker != null) {
+ if(savedBeforeBulkCaretMarker.isValid()) {
+ if(savedBeforeBulkCaretMarker.getStartOffset() != myOffset) {
+ moveToOffset(savedBeforeBulkCaretMarker.getStartOffset());
+ }
+ } else if (myOffset > doc.getTextLength()) {
+ moveToOffset(doc.getTextLength());
+ }
+ releaseBulkCaretMarker();
}
- releaseBulkCaretMarker();
}
};
ApplicationManager.getApplication().getMessageBus().connect(this).subscribe(DocumentBulkUpdateListener.TOPIC, bulkUpdateListener);