GtkSourceView-CRITICAL **: 高亮单行花费了太多时间,语法高亮将被禁用
GtkSourceView-CRITICAL **: Highlighting a single line took too much time, syntax highlighting will be disabled
我遇到了这个与 GtkSourceView4 相关的问题,我想了解如何避免它
(litos:4353): GtkSourceView-CRITICAL **: 12:57:09.105: Highlighting a single line took too much time, syntax highlighting will be disabled
当我尝试插入诸如 <h1>, <h2>
而不是诸如 <p>, <code>
等其他标签时会发生这种情况。
似乎是一个已经提交的错误 https://bugzilla.redhat.com/show_bug.cgi?id=1882163 没有解决方案。
由于我正在使用其他使用 GtkSourceView4 的程序并且突出显示工作正常,这可能是由于 API 尤其是函数 gtk_source_buffer_set_highlight_syntax
的不当使用造成的。
我正在使用 Gtksourceview4 和 GTK3。
这是有兴趣突出显示文本的代码的一部分
void open_file(struct lit *litos, gboolean template)
{
gboolean read_file_status;
GError *error;
char* contents;
gint page = gtk_notebook_get_current_page(litos->notebook);
char *filename = litos->filename[page];
read_file_status = g_file_get_contents(filename, &contents, NULL, &error);
if (read_file_status == FALSE)
{
g_error("error opening file: %s\n",error && error->message ? error->message : "No Detail");
return;
}
GtkTextBuffer *current_buffer = get_current_buffer(litos);
gtk_text_buffer_set_text(GTK_TEXT_BUFFER(current_buffer), contents, -1);
highlight_buffer(litos);
if (template)
{
litos->filename[page] = NULL;
filename = "Unsaved";
}
gtk_notebook_set_tab_label_text(
litos->notebook,
gtk_notebook_get_nth_page(
litos->notebook,
page
),
filename
);
gtk_notebook_set_menu_label_text(
litos->notebook,
gtk_notebook_get_nth_page(
litos->notebook,
page
),
filename
);
}
void highlight_buffer(struct lit *litos) /* Apply different font styles depending on file extension .html .c, etc */
{
gint page = gtk_notebook_get_current_page(litos->notebook);
GtkSourceLanguageManager *lm = gtk_source_language_manager_get_default();
GtkSourceLanguage *lang = gtk_source_language_manager_guess_language(lm, litos->filename[page], NULL);
gtk_source_buffer_set_language (litos->buffer, lang);
if (lang != NULL)
gtk_source_buffer_set_highlight_syntax (litos->buffer, TRUE);
}
你可以在这里找到完整的程序https://github.com/gioretikto/litos
这是 GtkSouceview 4 中的一个错误;我在 gedit 和鼠标垫中也注意到了同样的严重警报。降级到版本 GtkSourceview3 后,问题已解决。
我遇到了这个与 GtkSourceView4 相关的问题,我想了解如何避免它
(litos:4353): GtkSourceView-CRITICAL **: 12:57:09.105: Highlighting a single line took too much time, syntax highlighting will be disabled
当我尝试插入诸如 <h1>, <h2>
而不是诸如 <p>, <code>
等其他标签时会发生这种情况。
似乎是一个已经提交的错误 https://bugzilla.redhat.com/show_bug.cgi?id=1882163 没有解决方案。
由于我正在使用其他使用 GtkSourceView4 的程序并且突出显示工作正常,这可能是由于 API 尤其是函数 gtk_source_buffer_set_highlight_syntax
的不当使用造成的。
我正在使用 Gtksourceview4 和 GTK3。
这是有兴趣突出显示文本的代码的一部分
void open_file(struct lit *litos, gboolean template)
{
gboolean read_file_status;
GError *error;
char* contents;
gint page = gtk_notebook_get_current_page(litos->notebook);
char *filename = litos->filename[page];
read_file_status = g_file_get_contents(filename, &contents, NULL, &error);
if (read_file_status == FALSE)
{
g_error("error opening file: %s\n",error && error->message ? error->message : "No Detail");
return;
}
GtkTextBuffer *current_buffer = get_current_buffer(litos);
gtk_text_buffer_set_text(GTK_TEXT_BUFFER(current_buffer), contents, -1);
highlight_buffer(litos);
if (template)
{
litos->filename[page] = NULL;
filename = "Unsaved";
}
gtk_notebook_set_tab_label_text(
litos->notebook,
gtk_notebook_get_nth_page(
litos->notebook,
page
),
filename
);
gtk_notebook_set_menu_label_text(
litos->notebook,
gtk_notebook_get_nth_page(
litos->notebook,
page
),
filename
);
}
void highlight_buffer(struct lit *litos) /* Apply different font styles depending on file extension .html .c, etc */
{
gint page = gtk_notebook_get_current_page(litos->notebook);
GtkSourceLanguageManager *lm = gtk_source_language_manager_get_default();
GtkSourceLanguage *lang = gtk_source_language_manager_guess_language(lm, litos->filename[page], NULL);
gtk_source_buffer_set_language (litos->buffer, lang);
if (lang != NULL)
gtk_source_buffer_set_highlight_syntax (litos->buffer, TRUE);
}
你可以在这里找到完整的程序https://github.com/gioretikto/litos
这是 GtkSouceview 4 中的一个错误;我在 gedit 和鼠标垫中也注意到了同样的严重警报。降级到版本 GtkSourceview3 后,问题已解决。