2015-01-15 5 views
0

영어로 죄송합니다. 나는 C 언어의 간단한 편집기로 쓰고있다. GtkSourceCompletion을 사용하여 자동 완성 단어를 구현하는 방법을 이해할 수 없습니다.구현 자동 완성 GktSourceCompletion

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); 
} 

나는 모두 매우 혼란 스럽다. 어떻게하는지 알려주세요. 당신은 (단어) 매크로 GTK_SOURCE_COMPLETION_PROVIDER과 더불어, GtkSourceCompletionProvider로 GtkSourceCompletionWords을 고려할 필요가

및 완성을위한 공급자로 추가 :

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); 
}

답변

0

이 코드를 시도

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를 G의 버퍼에 등록해야합니다. tkSourceView : 당신을

GtkSourceBuffer * sBuf = gtk_source_buffer_new(NULL); 
GtkWidget * sview = gtk_source_view_new_with_buffer(sBuf); 
+1

것이다 : 당신은 또한 독립적으로 버퍼를 생성하고 GtkSourceView의 창조를 위해 인수로 전달할 수

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

: 당신이 버퍼를 얻을 수 있습니다

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

코드에 대한 설명을 제공하면 더 좋습니다. – Hawk