[ CCode ( type_id = "gtk_source_region_get_type ()" ) ]
[ GIR ( name = "Region" ) ]
public class SourceRegion : Object
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); } ``` ```python buffer: GtkSource.Buffer = GtkSource.Buffer() region: GtkSource.Region = GtkSource.Region(buffer=buffer) region_iter = region.get_start_region_iter()
while not region_iter.is_end(): success, start, end = region_iter.get_subregion() if not success: break
region_iter.next() ```