getFoldStartForLine method
if the corresponding line is in a foldable region, this function returns the first line in that foldable block.
Implementation
int? getFoldStartForLine(int lineIndex) {
final starts = _foldedStartsSorted;
final ends = _foldedEndsSorted;
if (starts.isEmpty) return null;
int lo = 0, hi = starts.length - 1;
while (lo <= hi) {
final mid = (lo + hi) >> 1;
if (starts[mid] < lineIndex) {
lo = mid + 1;
} else {
hi = mid - 1;
}
}
for (int i = hi; i >= 0; i--) {
if (starts[i] >= lineIndex) continue;
if (ends[i] >= lineIndex) return starts[i];
if (lineIndex - starts[i] > 100000) break;
}
return null;
}