SoftWrap (SoftWrap lastSoftWrap, int minWrapOffset, int maxWrapOffset, boolean preferMinOffset, int nonWhitespaceStartOffset, float nonWhitespaceStartX) { int wrapOffset = minWrapOffset >= maxWrapOffset ? minWrapOffset : calcSoftWrapOffset(minWrapOffset, maxWrapOffset, preferMinOffset); int indentInColumns = 1; int indentInPixels = mySoftWrapWidth; if (myRelativeIndent >= 0) { if (lastSoftWrap == null) { if (nonWhitespaceStartOffset >= 0 && nonWhitespaceStartOffset < wrapOffset) { indentInColumns += myEditor.offsetToLogicalPosition(nonWhitespaceStartOffset).column; indentInPixels += nonWhitespaceStartX; } indentInColumns += myRelativeIndent; indentInPixels += myRelativeIndent * myView.getPlainSpaceWidth(); } else { indentInColumns = lastSoftWrap.getIndentInColumns(); indentInPixels = lastSoftWrap.getIndentInPixels(); } } SoftWrapImpl result = new SoftWrapImpl(new TextChangeImpl("\n" + StringUtil.repeatSymbol(' ', indentInColumns - 1), wrapOffset), indentInColumns, indentInPixels); myStorage.storeOrReplace(result); return result; }