gtksourceview: unable to resolve language 'def'
пишет такое, при таком коде.
struct _TradingSimulation {
GtkBox parent_instance;
GtkWidget *sourceview;
GtkSourceLanguageManager *language_manager;
GtkSourceLanguage *language;
GtkSourceBuffer *buffer;
GtkSourceStyle *source_style;
GtkSourceStyleSchemeManager *scheme_manager;
GtkSourceStyleScheme *style_scheme;
};
и код
static void
trading_simulation_init ( TradingSimulation *self ) {
gtk_source_init ( );
self->language_manager = gtk_source_language_manager_new ( );
char *dirs[] = {
"language_definitions",
NULL
};
gtk_source_language_manager_set_search_path ( GTK_SOURCE_LANGUAGE_MANAGER ( self->language_manager ),
dirs
);
self->language = gtk_source_language_manager_get_language
( GTK_SOURCE_LANGUAGE_MANAGER ( self->language_manager ),
"sim"
);
self->buffer = gtk_source_buffer_new_with_language ( GTK_SOURCE_LANGUAGE ( self->language ) );
self->style_scheme = gtk_source_buffer_get_style_scheme ( GTK_SOURCE_BUFFER ( self->buffer ) );
self->scheme_manager = gtk_source_style_scheme_manager_get_default ( );
self->source_style = gtk_source_style_scheme_get_style ( GTK_SOURCE_STYLE_SCHEME ( self->style_scheme ), "tango" );
gtk_source_style_scheme_manager_set_search_path ( GTK_SOURCE_STYLE_SCHEME_MANAGER ( self->scheme_manager ), dirs );
gtk_source_buffer_set_style_scheme ( GTK_SOURCE_BUFFER ( self->buffer ), GTK_SOURCE_STYLE_SCHEME ( self->style_scheme ) );
gtk_source_buffer_set_highlight_syntax ( GTK_SOURCE_BUFFER ( self->buffer ), TRUE );
self->sourceview = gtk_source_view_new_with_buffer ( self->buffer );
gtk_source_view_set_show_line_numbers ( GTK_SOURCE_VIEW ( self->sourceview ), TRUE );
gtk_box_pack_start ( GTK_BOX ( self ), self->sourceview, TRUE, TRUE, 0 );
gtk_widget_show_all ( GTK_WIDGET ( self ) );
}
в каталоге language_definitions вот что.
classic.xml cobalt.xml kate.xml language2.rng oblivion.xml solarized-dark.xml solarized-light.xml styles.rng sym.lang tango.xml
я так понял что как раз стиль делает def:, но не понятно как это должно сработать, чтобы видеть в новом оформлении код и подсветку. я делал свой стиль языка.
<?xml version="1.0" encoding="UTF-8"?>
<language id="sim" name="SIM" version="2.0" _section="Source">
<metadata>
<property name="mimetypes">text/x-c;text/x-csrc</property>
<property name="globs">*.sim</property>
</metadata>
<styles>
<style id="comment" name="Comment" map-to="def:comment"/>
<style id="keyword" name="Keyword" map-to="def:keyword"/>
<style id="type" name="Data Type" map-to="def:type"/>
</styles>
<definitions>
<context id="sim">
<include>
<context id="comment" style-ref="comment">
<start>\/\/</start>
<end>$</end>
</context>
<context id="comment-multiline" style-ref="comment">
<start>\/\*</start>
<end>\*\/</end>
<include>
<context ref="def:in-comment"/>
</include>
</context>
<context ref="def:decimal"/>
<context ref="def:float"/>
<context id="keywords" style-ref="keyword">
<keyword>if</keyword>
<keyword>else</keyword>
<keyword>for</keyword>
<keyword>while</keyword>
<keyword>return</keyword>
<keyword>break</keyword>
<keyword>do</keyword>
<keyword>continue</keyword>
<keyword>goto</keyword>
</context>
<context id="types" style-ref="type">
<keyword>let</keyword>
</context>
</include>
</context>
</definitions>
</language>
вот какие ошибки.
(app:8115): GtkSourceView-WARNING **: 17:46:25.074: in file language_definitions/sym.lang: style 'def:comment' not defined
(app:8115): GtkSourceView-WARNING **: 17:46:25.074: Failed to load 'language_definitions/sym.lang': unable to resolve language 'def'