public void contentRemoved(int offset, int length, String text, boolean clearDirty) { Edit last = getLastEdit(); Edit toMerge = getMergeEdit(); if (!clearDirty && toMerge instanceof Remove && redosFirst == null) { Remove rem = (Remove) toMerge; if (rem.offset == offset) { rem.content.str = rem.content.str.concat(text); rem.content.hashcode = rem.content.str.hashCode(); rem.length += length; KillRing.getInstance().changed(rem.content); return; } else if (offset + length == rem.offset) { rem.content.str = text.concat(rem.content.str); rem.content.hashcode = rem.content.str.hashCode(); rem.length += length; rem.offset = offset; KillRing.getInstance().changed(rem.content); return; } } Remove rem = new Remove(this, offset, length, text); if (clearDirty) { redoClearDirty = last; undoClearDirty = rem; } if (compoundEdit != null) compoundEdit.add(rem); else { reviseUndoId(); addEdit(rem); } KillRing.getInstance().add(rem.content); }