IDEA-55320
authorAlexey Kudravtsev <cdr@intellij.com>
Fri, 28 May 2010 10:42:04 +0000 (14:42 +0400)
committerAlexey Kudravtsev <cdr@intellij.com>
Fri, 28 May 2010 10:47:13 +0000 (14:47 +0400)
platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java

index 7ea0829403abceffd4e3b1aaf86b8ea76ecc9c63..56f009b94c4a3d50c5de55d117f1a81e50785304 100644 (file)
@@ -278,8 +278,9 @@ public class DocumentWindowImpl extends UserDataHolderBase implements Disposable
       if (range.contains(offset) || range.getEndOffset() == offset/* in case of inserting at the end*/) {
         TextRange rangeToModify = new TextRange(offset, Math.min(range.getEndOffset(), endOffset));
         TextRange hostRangeToModify = rangeToModify.shiftRight(hostRange.getStartOffset() - curRangeStart);
-        CharSequence toReplace = i == myShreds.size() - 1 ? s : s.subSequence(0, Math.min(hostRangeToModify.getLength(), s.length()));
-        s = s.subSequence(toReplace.length(), s.length());
+        CharSequence toReplace = i == myShreds.size() - 1 || range.getEndOffset() + shred.suffix.length() >= endOffset
+                                 ? s : s.subSequence(0, Math.min(hostRangeToModify.getLength(), s.length()));
+        s = toReplace == s ? "" : s.subSequence(toReplace.length(), s.length());
         hostRangesToModify.add(Pair.create(hostRangeToModify, toReplace));
         offset = rangeToModify.getEndOffset();
       }