void () { myVisualLineStart = myEditor.visualPositionToOffset(new VisualPosition(myVisibleCaret.line, 0)); myVisualLineEnd = myEditor.visualPositionToOffset(new VisualPosition(myVisibleCaret.line + 1, 0)); int[] yRange = myEditor.visualLineToYRange(myVisibleCaret.line); int logicalLineStartY; if (myEditor.getSoftWrapModel().getSoftWrap(myVisualLineStart) == null) { logicalLineStartY = yRange[0]; } else { int startVisualLine = myEditor.myView.offsetToVisualLine(EditorUtil.getNotFoldedLineStartOffset(myEditor, getOffset()), false); logicalLineStartY = myEditor.visualLineToY(startVisualLine); } int logicalLineEndY; if (myEditor.getSoftWrapModel().getSoftWrap(myVisualLineEnd) == null) { logicalLineEndY = yRange[1]; } else { int endVisualLine = myEditor.myView.offsetToVisualLine(EditorUtil.getNotFoldedLineEndOffset(myEditor, getOffset()), true); logicalLineEndY = myEditor.visualLineToY(endVisualLine) + myEditor.getLineHeight(); } myVerticalInfo = new VerticalInfo(yRange[0], logicalLineStartY, logicalLineEndY - logicalLineStartY); }