let find_next line diffs =
match diffs with
[] -> None
| h :: q ->
let rec iter acc_l = function
[] -> h, (range_of_index2_of_diff h)
| d :: q ->
if (first_of_diff d) > line - acc_l then
d, acc_l + (range_of_index2_of_diff d)
else
let sup =
match d with
Add (_,_,_) -> 0
| Delete (i2,i,_)
| Change (i2,_,i,_) -> (range_of_index i2)
in
iter (acc_l + sup) q
in
let (diff, decal) = iter 0 diffs in
Some ((first_of_diff diff) + decal - 1)