2011-07-19 39 views
4

使用emacs和etags在項目中導航時,是否可以通過搜索函數輕鬆地獲取頭文件。我一直在使用VisualStudio,我可以通過點擊goto聲明來查看它是否有類似的方式在emacs中使用etags?在emacs中使用ETAGS/CTAGS與C++項目

例如

ArchiveDialog::onKeyPress() 

搜索將在ArchiveDialog(源文件頂部的#include)頭文件中的onkeypress聲明。

在im使用etags「M-。onKeyPress」時,只會在cpp文件中找到標籤而不在我的頭文件中。

任何幫助,將不勝感激 感謝

回答

3

從CEDET語義應提供相應的功能......請你們onto this section進入「語義用戶指南」瞭解更多詳細信息...

+0

IV看着面前CEDET並安裝它,但並沒有真正得到與它更喜歡ETAGS的功能只是希望它有可能導航到功能 – user641902

+0

爲C++代碼的頂層我個人使用gtags從GNU Global - 它更好地處理C + +代碼+允許一些更多的功能,比較ctags ... –

+0

我聽說過很多,我可能不得不嘗試一下。 Iv剛剛安裝了cscope,所以我會給出一個去看看我如何繼續,可能不得不再次改變爲gtags。 – user641902

0

是的,我相信所以。

首先您應該知道,有2個版本的etags。有emacs附帶的,以及Exuberant Ctags附帶的etags版本。

http://ctags.sourceforge.net/

你想要的ETag的第二個版本。該版本具有更多選項,包括標記函數原型的選項。

我想,此選項可能爲你工作,雖然我沒有測試它:

--C++-kinds=+p 

一旦聲明的標籤,都將顯示爲結果當您嘗試跳轉到一個標籤。如果您想要定義時着陸在聲明上,反之亦然,請鍵入「C-u M-」。去下一場比賽。

我認爲GNU Global也可以讓你跳轉到聲明中,儘管自從我使用它之後它已經有一段時間了。但是,Global的C++解析器有一些缺陷......

1

從您的描述中,聽起來您可能已經在源文件上運行了etags,但沒有指定#include文件。假設你的頭(#include)引用的文件有「.hh後綴,並在同一目錄作爲源,請執行以下操作:

cd $project_directory 
etags --append *.hh