GtkSourceCompletion ne considère qu'une ligne sur deux.
Bonjour,
J'ai un problème avec GtkSourceCompletion, de gtksourceview 2.10.x et 3.4.2, qui ne considère qu'une ligne sur deux pour faire sa liste de mots. Par exemple:
Code:
1 2
| #define ABCD
#define ABCDE |
Seul ABCD sera proposé en completion automatique.
Voici mon code, un fichier est chargé dans un textview avec fgets(), et ensuite un GtkSourceCompletionWords est enregistré sur le buffer du textview:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| textview_ea_h = gtk_text_view_new();
GtkTextBuffer * buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview_ea_h));
GtkTextIter start;
GtkTextIter end;
gchar read_buf[4097];
FILE * file = fopen("ea.h","rb");
fseek(file,0,SEEK_END);
unsigned int len = ftell(file);
rewind(file);
gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(buf),&start);
gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(buf),&end);
gtk_text_buffer_delete(GTK_TEXT_BUFFER(buf), &start, &end);
gchar * buf_utf8;
while(fgets(read_buf,4097,file)) {
gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(buf),&end);
buf_utf8 = g_locale_to_utf8(read_buf, -1, NULL, NULL, NULL);
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buf), &end, buf_utf8, -1);
g_free (buf_utf8);
}
gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (buf), TRUE);
fclose(file);
source_completion_words_ea_h = gtk_source_completion_words_new("ea.h", NULL);
gtk_source_completion_words_register(source_completion_words_ea_h, GTK_TEXT_BUFFER(buf)); |
A un autre endroit du programme, j'ajoute source_completion_words_ea_h comme provider de mots:
Code:
1 2 3 4
| l->source_completion = gtk_source_view_get_completion(GTK_SOURCE_VIEW(l->editor));
GError *error = NULL;
gtk_source_completion_add_provider(l->source_completion,GTK_SOURCE_COMPLETION_PROVIDER(source_completion_words_ea_h),&error);
g_error_free(error); |