/** * Deletes from offset in this to endOffset in delTo. Uses ModelList.collapse to perform quick * deletion. * * @param delTo iterator whose endpoint is the last character to delete * @return new offset */ int deleteRight(Iterator delTo) { collapse(delTo); // if both pointing to same item, and it's a gap if (eq(delTo) && current().isGap()) { // inside gap current().shrink(delTo.getBlockOffset() - getBlockOffset()); return getBlockOffset(); } // if brace is multiple char it must be a comment because the above if // test guarrantees it can't be a gap. if (!eq(delTo)) clipLeft(); delTo.clipRight(); if (!atStart()) prev(); int delToSizeCurr; String delToTypeCurr; if (delTo.atEnd()) { setTo(delTo); return 0; } else { delToSizeCurr = delTo.current().getSize(); delToTypeCurr = delTo.current().getType(); } // get info on previous item. delTo.prev(); // get stats on previous item int delToSizePrev; String delToTypePrev; if (delTo.atStart()) { // no previous item, can't be at end delTo.next(); setTo(delTo); return 0; } else { delToSizePrev = delTo.current().getSize(); delToTypePrev = delTo.current().getType(); } delTo.next(); // put delTo back on original node int temp = _calculateOffset(delToSizePrev, delToTypePrev, delToSizeCurr, delToTypeCurr, delTo); this.setTo(delTo); return temp; }