Region
Object Hierarchy:
Description:
Region utility.
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;
gtk_source_region_get_start_region_iter (region, ®ion_iter);
while (!gtk_source_region_iter_is_end (®ion_iter)) { GtkTextIter subregion_start; GtkTextIter subregion_end;
if (!gtk_source_region_iter_get_subregion (®ion_iter, &subregion_start, &subregion_end)) { break; }
// Do something useful with the subregion.
gtk_source_region_iter_next (®ion_iter); } ```