如何使基本代码自动完成?

发布于 2024-09-12 15:29:08 字数 147 浏览 10 评论 0原文

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

任何人都可以给我一些教程的网址或描述 gtk_source_completion_XXX 函数的用法吗?

I'm making simple code editor in GTK and gtksourceview2.0. I would like to add to my editor a code completion window. There should be 10-15 keywords (always the same).

Can anyone could give me url for some tutorials or describe usage of gtk_source_completion_XXX functions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梨涡少年 2024-09-19 15:29:08

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

Yeah, you could do what ccSadegh said. Or you could just use GtkSourceCompletion.

想挽留 2024-09-19 15:29:08

您需要的是通过 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 中。

如果您想在 .::-> 之后显示自动完成列表,那么您应该通过像上面的方法。

What you need is to parse the user input by the key-press-event signal (or similar signals).

  • Get the GtkTextBuffer by calling gtk_text_view_get_buffer.
  • Get the GtkTextMark by calling gtk_text_buffer_get_insert.
  • Get the GtkTextIter by calling gtk_text_buffer_get_iter_at_mark.
  • Check if the GtkTextIter is at the end of the word by gtk_text_iter_ends_word.
  • If it was
    • then Use gtk_text_iter_backward_word_start to get the GtkTextIter for the start of the word.
    • Call gtk_text_buffer_get_text to get the uncompleted word.
    • Search for related identifiers and display them in a GtkTreeView on a GtkWindow of GTK_WINDOW_POPUP type.

If you want to show the auto-complete list after . or :: or ->, then you should get the previous word by an approach like the above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文