getLineBoundary method
Implementation
BufferRangeLine? getLineBoundary(CellOffset position) {
if (position.y < 0 || position.y >= lines.length) {
return null;
}
var startLine = position.y;
while (_lineContinuesFromPrevious(startLine)) {
startLine--;
}
var endLine = position.y;
while (_lineContinuesToNext(endLine)) {
endLine++;
}
while (startLine < endLine && _lineHasOnlyWhitespace(startLine)) {
startLine++;
}
while (endLine > startLine && _lineHasOnlyWhitespace(endLine)) {
endLine--;
}
final startColumn = _firstNonWhitespaceColumn(startLine);
final endColumn = _lastNonWhitespaceColumnEnd(endLine);
if (startColumn == viewWidth && endColumn == 0) {
return BufferRangeLine(
CellOffset(0, startLine),
CellOffset(viewWidth, endLine),
);
}
return BufferRangeLine(
CellOffset(startColumn, startLine),
CellOffset(endColumn, endLine),
);
}