Как сделать базовое автозаполнение кода? - PullRequest
3 голосов
/ 29 июля 2010

Я делаю простой редактор кода в GTK и gtksourceview2.0.Я хотел бы добавить в мой редактор окно завершения кода.Должно быть 10-15 ключевых слов (всегда одно и то же).

Может кто-нибудь может дать мне URL для некоторых уроков или описать использование функций gtk_source_completion_XXX?

Ответы [ 2 ]

6 голосов
/ 23 августа 2010

Вам нужно проанализировать ввод пользователя по сигналу key-press-event (или аналогичным сигналам).

  • Получите GtkTextBuffer , вызвав gtk_text_view_get_buffer.
  • Получите GtkTextMark , вызвав gtk_text_buffer_get_insert.
  • Получите GtkTextIter , вызвав gtk_text_buffer_get_iter_at_mark.
  • Проверьте, находится ли GtkTextIter в конце слова с помощью gtk_text_iter_ends_word.
  • Если бы это было
    • затем используйте gtk_text_iter_backward_word_start, чтобы получить GtkTextIter для начала слова.
    • Вызовите gtk_text_buffer_get_text, чтобы получить незавершенное слово.
    • Поиск связанных идентификаторов и отображение их в GtkTreeView в GtkWindow типа GTK_WINDOW_POPUP.

Если вы хотите показать список автозаполнения после . или :: или ->, то вы должны получить предыдущее слово с помощью подхода, подобного приведенному выше.

4 голосов
/ 13 октября 2012

Да, вы могли бы сделать то, что сказал ccSadegh . Или вы можете просто использовать GtkSourceCompletion .

...