0

私の英語でごめんなさい。C言語の簡易エディタで書いています。GtkSourceCompletion を使用してオートコンプリート ワードを実装する方法がわかりません。

static void set_completion(Page *page)
{
    GtkSourceCompletionWords *words = gtk_source_completion_words_new("words_current_page", NULL);
    gtk_source_completion_words_register(words, GTK_TEXT_BUFFER(page->buffer));
    GtkSourceCompletion *comp = gtk_source_view_get_completion(GTK_SOURCE_VIEW(page->text_edit));
    GtkSourceCompletionContext *context = gtk_source_completion_create_context(comp, NULL);
    GtkSourceCompletionProvider *provider;
    gtk_source_completion_add_provider(comp, provider, NULL);
}

私は試してみますが、すべて非常に混乱しています。やり方を教えてください。

4

2 に答える 2

1

いくつかの説明:

マクロ GTK_SOURCE_COMPLETION_PROVIDER(words) を使用して、GtkSourceCompletionWords を GtkSourceCompletionProvider と見なし、それを補完のプロバイダーとして追加する必要があります。

GtkSourceCompletion *comp = gtk_source_view_get_completion(GTK_SOURCE_VIEW(page->text_edit));
gtk_source_completion_add_provider(comp,GTK_SOURCE_COMPLETION_PROVIDER(words),NULL);

プロバイダーとして追加する前に、GtkSourceCompletionWords を GtkSourceView のバッファーに登録する必要があります。

GtkSourceCompletionWords *words = gtk_source_completion_words_new("wds_current_page", NULL);
gtk_source_completion_words_register(words, GTK_TEXT_BUFFER(page->buffer));

次の方法でバッファを取得できます。

GtkTextBuffer * buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(page->text_edit));

バッファを個別に作成して、GtkSourceView の作成の引数として渡すこともできます。

GtkSourceBuffer * sBuf = gtk_source_buffer_new(NULL);
GtkWidget * sview = gtk_source_view_new_with_buffer(sBuf);
于 2015-05-24T10:24:49.463 に答える
0

このコードを試してください:

static void set_completion(Page *page)
{
    GtkSourceCompletionWords *words = gtk_source_completion_words_new("words_current_page", NULL);
    gtk_source_completion_words_register(words, GTK_TEXT_BUFFER(page->buffer));
    GtkSourceCompletion *comp = gtk_source_view_get_completion(GTK_SOURCE_VIEW(page->text_edit));

    gtk_source_completion_add_provider(comp, GTK_SOURCE_COMPLETION_PROVIDER(words), NULL);
}
于 2015-05-13T07:26:36.550 に答える