0

我想为 gtk-3.0 创建一个完整的标签列表。

所以我尝试了

ctags -R --c++-kinds=+p --fields=+iaS /usr/include/gtk-3.0/

它有效,但列表不完整。例如缺少 gtk_file_chooser_dialog_new,但我绝对可以在 /usr/include/gtk-3.0/gtk/gtkfilechooserdialog.h 中看到它:

GtkWidget *gtk_file_chooser_dialog_new (const gchar *title,
              GtkWindow            *parent,
              GtkFileChooserAction  action,
              const gchar          *first_button_text,
              ...) G_GNUC_NULL_TERMINATED;

所以我只尝试了这个文件,仍然没有找到 gtk_file_chooser_dialog_new:

ctags --c++-kinds=+p --fields=+iaS /usr/include/gtk-3.0/gtk/gtkfilechooserdialog.h

这是生成的: https ://gist.github.com/3879327

在此先感谢,库尔佩

4

2 回答 2

2

我实际上建议尝试将GNU global作为 ctags/etags 的兼容替代品。在发现与您描述的相似的令人失望的结果后,我开始使用它。我针对 gtk-3.0.12 tarball 进行了测试:

$ cd gtk+-3.0.12
$ gtags
$ global gtk_file_chooser_dialog_new
gtk/gtkfilechooserdialog.c

该文档显示了支持的编辑器的示例,用于浏览代码库中的对象。一个快速版本less如下所示:

$ export LESSGLOBALTAGS=global
$ less -t gtk_file_chooser_dialog_new
于 2012-10-12T17:42:56.037 回答
1

由于有几个 GTK 宏,Ctags 会忽略方法声明。

传递参数以忽略它们可以解决问题:

ctags -R --c++-kinds=+p --fields=+iaS -I G_GNUC_NULL_TERMINATED -I G_GNUC_CONST  -f gtk3 /usr/include/gtk-3.0/

它们可能更多,所以这个列表并不完整,但它增加了额外的 418 个符号。

于 2012-10-12T17:19:36.207 回答