2

我在 GTK 和 gtksourceview2.0 中制作简单的代码编辑器。我想在我的编辑器中添加一个代码完成窗口。应该有 10-15 个关键字(始终相同)。

谁能给我一些教程的网址或描述 gtk_source_completion_XXX 函数的用法?

4

2 回答 2

6

是的,你可以按照ccSadegh 所说的去做。或者你可以只使用GtkSourceCompletion

于 2012-10-13T12:56:45.213 回答
6

您需要的是通过key-press-event信号(或类似信号)解析用户输入。

  • 通过调用 gtk_text_view_get_buffer获取GtkTextBuffer
  • 通过调用 gtk_text_buffer_get_insert获取GtkTextMark
  • 通过调用 gtk_text_buffer_get_iter_at_mark获取GtkTextIter
  • 通过 gtk_text_iter_ends_word检查GtkTextIter是否在单词的末尾。
  • 如果它是
    • 然后使用 gtk_text_iter_backward_word_start 获取 GtkTextIter 作为单词的开头。
    • 调用 gtk_text_buffer_get_text 获取未完成的单词。
    • 搜索相关标识符并将它们显示在 GTK_WINDOW_POPUP 类型的 GtkWindow 上的 GtkTreeView 中。

如果您想在.or::或之后显示自动完成列表->,那么您应该通过上述方法获取前一个单词。

于 2010-08-22T23:04:30.467 回答