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'

Ответы (0 шт):