ensureVisible method
Ensures that the given line and column are in the viewport.
Implementation
ViewportModel ensureVisible(int line, int colstart, int colend) {
final maxWidth = _maxWidth();
var newModel = this;
if (softWrap) {
// In soft-wrap mode, horizontal scrolling isn't meaningful: instead we map
// the target to a virtual y-offset (wrapped subline).
newModel = newModel.setXOffset(0);
} else if (colend <= maxWidth) {
newModel = newModel.setXOffset(0);
} else {
newModel = newModel.setXOffset(colstart - horizontalStep);
}
final targetYOffset = softWrap
? _virtualYOffsetFor(line, colstart, maxWidth)
: line;
if (targetYOffset < yOffset || targetYOffset >= yOffset + _maxHeight()) {
newModel = newModel.setYOffset(targetYOffset);
}
return newModel;
}