c-GTK文本缓冲区,查找完整的单词



我试图将GTK文本视图中隔离的单词与关键字列表进行比较,但似乎不知道如何做到这一点。我在C.工作(学习(

gchar word[][10] = {"auto", "continue", "enum".....

我正在文本缓冲区中逐字逐句地移动迭代,然后尝试

gtk_text_iter_get_text(&start,&end);

所以可以以单词[1]结尾为";自动;并且迭代找到单词";自动;在文本视图中。但无法找到比较它们以确认匹配的方法。尝试使用gtk_text_iter_forward_search((会导致突出显示";自动;在automobile中。

我尝试过"strcmp((",但无论文本视图中有什么内容,它总是返回true。

我正在研究语法高亮显示之类的东西,有注释、单引号/双引号、转义序列/格式说明符和数字都可以高亮显示,但我一直在强调单词,任何朝着正确方向的推动都是值得赞赏的。

我通过检查文本是否位于单词的开头和结尾找到了解决方案。

while (1){

if(gtk_text_iter_forward_search(&end, word[loop], GTK_TEXT_SEARCH_TEXT_ONLY,
&start, &end, &stop)){
if (gtk_text_iter_starts_word(&start) && gtk_text_iter_ends_word(&end)){
gtk_text_buffer_apply_tag(buffer, word_tag, &start, &end);
}
else{
gtk_text_iter_forward_word_end(&end);
gtk_text_buffer_remove_tag(buffer, word_tag, &start, &end);
}
}
else
break;
}

在一个迭代C关键字数组的for循环中,所以现在如果我键入"auto",它将突出显示,但如果我继续键入"automatic",文本标记将被删除。while循环逐行扫描光标所在的行和上面的行。我学习C和GTK才一个月,所以不是很高级,但也许发布我发现的解决方案会帮助其他正在学习的人。

最新更新