ctags没有找到所有gtk方法

时间:2012-10-12 14:05:26

标签: linux gtk ctags

我想为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

提前感谢,kulpae

2 个答案:

答案 0 :(得分: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

文档显示examples for supported editors用于从代码库中浏览对象。 less的快速版本如下所示:

$ export LESSGLOBALTAGS=global
$ less -t gtk_file_chooser_dialog_new

答案 1 :(得分: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个符号。