2012-10-12 53 views
0

我想爲gtk-3.0創建一個完整的標籤列表。ctags找不到所有的gtk方法

所以我

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

我實際上會推薦嘗試GNU global作爲ctags/etags的兼容替代品。在發現類似的令人失望的結果之後,我開始使用它,就像您所描述的那樣。我測試針對GTK-3.0.12壓縮包:

$ 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

C標籤由於幾個GTK宏而忽略方法聲明。

傳遞的參數忽略他們解決了這個問題:

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

可能有更多的人,所以這個名單是不完整的,但它增加了額外的418個符號。