diff options
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.java | 15 |
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); |