A `GtkSourceBuffer` object is the model for [class@View] widgets. It extends the [[email protected]] class by adding features useful
to display and edit source code such as syntax highlighting and bracket matching.
To create a `GtkSourceBuffer` use [[email protected]] or [[email protected]_with_language]. The second form is just a
convenience function which allows you to initially set a [class@Language]. You can also directly create a [class@View] and get its [
class@Buffer] with [[email protected]_buffer].
The highlighting is enabled by default, but you can disable it with [[email protected]_highlight_syntax].
Context Classes:
It is possible to retrieve some information from the syntax highlighting engine. The default context classes that are applied to regions
of a `GtkSourceBuffer`:
**comment**: the region delimits a comment;
**no-spell-check**: the region should not be spell checked;
**path**: the region delimits a path to a file;
**string**: the region delimits a string.
Custom language definition files can create their own context classes, since the functions like [[email protected]_has_context_class]
take a string parameter as the context class.
And the [[email protected]:GtkSourceBuffer:highlight-updated] signal permits to be notified when a context class
region changes.
Each context class has also an associated [[email protected]] with the name `gtksourceview:context-classes:<name>`. For example to
retrieve the [[email protected]] for the string context class, one can write: ```c GtkTextTagTable *tag_table; GtkTextTag *tag;
tag_table = gtk_text_buffer_get_tag_table (buffer); tag = gtk_text_tag_table_lookup (tag_table, "gtksourceview:context-classes:string");
```
The tag must be used for read-only purposes.
Accessing a context class via the associated [[email protected]] is less convenient than the `GtkSourceBuffer` API, because:
The tag doesn't always exist, you need to listen to the [[email protected]:GtkSourceBuffer:tag-added] and [
[email protected]:GtkSourceBuffer:tag-removed] signals.
Instead of the [[email protected]:GtkSourceBuffer:highlight-updated] signal, you can listen to the [
[email protected]:GtkSourceBuffer:apply-tag] and [[email protected]:GtkSourceBuffer:remove-tag]
signals.
A possible use-case for accessing a context class via the associated [[email protected]] is to read the region but without adding a hard
dependency on the GtkSourceView library (for example for a spell-checking library that wants to read the no-spell-check region).