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 f508694a29f7..dbc0f41192d5 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 @@ -17,7 +17,6 @@ package com.intellij.openapi.editor.impl; import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.ex.EditorEx; -import com.intellij.openapi.editor.ex.FoldingModelEx; import com.intellij.openapi.editor.ex.SoftWrapChangeListener; import com.intellij.openapi.editor.ex.SoftWrapModelEx; import com.intellij.openapi.editor.ex.util.EditorUtil; @@ -347,17 +346,21 @@ public class SoftWrapModelImpl implements SoftWrapModelEx { } public void beforeDocumentChangeAtCaret() { - int offset = myEditor.getCaretModel().getOffset(); + CaretModel caretModel = myEditor.getCaretModel(); + VisualPosition visualCaretPosition = caretModel.getVisualPosition(); + if (!isInsideSoftWrap(visualCaretPosition)) { + return; + } + int offset = caretModel.getOffset(); TextChangeImpl softWrap = myStorage.getSoftWrap(offset); if (softWrap == null) { return; } - VisualPosition visualCaretPosition = myEditor.getCaretModel().getVisualPosition(); myDocumentChangeManager.makeHardWrap(softWrap); // Restore caret position. - myEditor.getCaretModel().moveToVisualPosition(visualCaretPosition); + caretModel.moveToVisualPosition(visualCaretPosition); } @Override diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/DefaultSoftWrapApplianceManager.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/DefaultSoftWrapApplianceManager.java index 9b7a7fdd8ee2..89cd087c580f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/DefaultSoftWrapApplianceManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/DefaultSoftWrapApplianceManager.java @@ -144,13 +144,13 @@ public class DefaultSoftWrapApplianceManager implements SoftWrapApplianceManager document.addDocumentListener(new LineOrientedDocumentChangeAdapter() { @Override public void beforeDocumentChange(int startLine, int endLine, int symbolsDifference) { + for (int i = startLine; i <= endLine; i++) { + myProcessedLogicalLines.remove(i); + } } @Override public void afterDocumentChange(int startLine, int endLine, int symbolsDifference) { - for (int i = startLine; i <= endLine; i++) { - myProcessedLogicalLines.remove(i); - } } }); }