Maybe I got confused, but how do they then count the newlines in all the previous chunks? That information is still needed to calculate the line for a specific position in the last chunk
It's not you who's confused, it's that this part of the process is not described. We only have some hints, here:
> If you called rope.offset_to_point(7234), the Rope would traverse its SumTree to find the Chunk that contains offset 7234 and then, on that Chunk, it would call offset_to_point again.
And here:
> while the Rope can get us to the right Chunk in O(log(n))
I would guess that each node of the SumTree includes the number of newlines of all the chunks before it.
It's not you who's confused, it's that this part of the process is not described. We only have some hints, here:
> If you called rope.offset_to_point(7234), the Rope would traverse its SumTree to find the Chunk that contains offset 7234 and then, on that Chunk, it would call offset_to_point again.
And here:
> while the Rope can get us to the right Chunk in O(log(n))
I would guess that each node of the SumTree includes the number of newlines of all the chunks before it.