void (int charCountToWrapAt, boolean useCustomSoftWrapIndent) { int charWidthInPixels = BitmapFont.CHAR_WIDTH; // we're adding 1 to charCountToWrapAt, to account for wrap character width, and 1 to overall width to overcome wrapping logic subtleties EditorTestUtil.configureSoftWraps(getEditor(), (charCountToWrapAt + 1) * charWidthInPixels + 1, 1000, charWidthInPixels, useCustomSoftWrapIndent); ((SoftWrapModelImpl)getEditor().getSoftWrapModel()).setSoftWrapPainter(new SoftWrapPainter() { @Override public int paint(@NotNull Graphics g, @NotNull SoftWrapDrawingType drawingType, int x, int y, int lineHeight) { g.setColor(getEditor().getColorsScheme().getDefaultForeground()); int xStart = x + charWidthInPixels / 4; int xEnd = x + charWidthInPixels * 3 / 4; int yStart = y + lineHeight / 4; int yEnd = y + lineHeight * 3 / 4; switch (drawingType) { case BEFORE_SOFT_WRAP_LINE_FEED -> { g.drawLine(xEnd, yStart, xEnd, yEnd); g.drawLine(xStart, yEnd, xEnd, yEnd); } case AFTER_SOFT_WRAP -> { g.drawLine(xStart, yStart, xStart, yEnd); g.drawLine(xStart, yEnd, xEnd, yEnd); } } return charWidthInPixels; } @Override public int getDrawingHorizontalOffset(@NotNull Graphics g, @NotNull SoftWrapDrawingType drawingType, int x, int y, int lineHeight) { return charWidthInPixels; } @Override public int getMinDrawingWidth(@NotNull SoftWrapDrawingType drawingType) { return charWidthInPixels; } @Override public boolean canUse() { return true; } @Override public void reinit() { } }); }