void (int columnShift, int lineShift, boolean withSelection, boolean scrollToCaret) { if (lineShift == 0) { myEnd += columnShift; if (!withSelection) { myStart = myPos = myEnd; } } else { var oldPos = myPos; var currentPosition = getLogicalPosition(); moveToLogicalPosition(new LogicalPosition(currentPosition.line + lineShift, currentPosition.column + columnShift)); if (withSelection) { var newPos = myPos; myStart = Math.min(oldPos, newPos); myEnd = Math.max(oldPos, newPos); } } }