A `GtkSourceRegion` permits to store a group of subregions of a [class@Gtk.TextBuffer]. `GtkSourceRegion` stores the subregions with
pairs of [class@Gtk.TextMark]'s, so the region is still valid after insertions and deletions in the [class@Gtk.TextBuffer].
The [class@Gtk.TextMark] for the start of a subregion has a left gravity, while the [class@Gtk.TextMark] for the end of a subregion has a
right gravity.
The typical use-case of `GtkSourceRegion` is to scan a [class@Gtk.TextBuffer] chunk by chunk, not the whole buffer at once to not block
the user interface. The `GtkSourceRegion` represents in that case the remaining region to scan. You can listen to the [
signal@Gtk.TextBuffer:GtkSourceRegion:insert-text] and [signal@Gtk.TextBuffer:GtkSourceRegion:delete-range]
signals to update the `GtkSourceRegion` accordingly.
To iterate through the subregions, you need to use a [struct@RegionIter], for example: ```c GtkSourceRegion *region; GtkSourceRegionIter
region_iter;