Использование ETAGS / CTAGS в emacs с C ++ Project - PullRequest
4 голосов
/ 19 июля 2011

Я использую emacs и etags для навигации по проекту, возможно ли легко получить доступ к заголовочному файлу с помощью поиска функции. Я использую VisualStudio, и я могу просмотреть его, нажав объявление goto. Есть ли аналогичный способ использования etags в emacs?

, например

ArchiveDialog::onKeyPress()

поиск объявления onkeypress, которое будет в заголовочном файле ArchiveDialog (#include вверху исходного файла).

в тот момент, когда я использую etags, "M-. OnKeyPress" просто найдет теги в файлах cpp, а не в моих заголовочных файлах.

Любая помощь будет оценена Спасибо

Ответы [ 3 ]

3 голосов
/ 19 июля 2011

Semantic от CEDET должен обеспечивать соответствующую функциональность ... Пожалуйста, посмотрите в этом разделе и в "Руководстве пользователя Semantic" для получения более подробной информации ...

1 голос
/ 23 мая 2013

По вашему описанию может показаться, что вы запустили etags для исходного файла (ов), но не указали файл (ы) #include. Предполагая, что ваши заголовочные (#include) файлы имеют суффикс «.hh» и находятся в том же каталоге, что и ваш исходный код, выполните следующие действия:

cd $project_directory
etags --append *.hh
0 голосов
/ 20 июля 2011

Да, я верю в это.

Во-первых, вы должны знать, что существует 2 версии etags.Существует тот, который поставляется с emacs, и версия etags, которая поставляется с Exuberant Ctags.

http://ctags.sourceforge.net/

Вам нужна вторая версия etags.Эта версия имеет больше опций, в том числе возможность маркировать прототипы функций.

Я думаю, что эта опция может работать для вас, хотя я ее не тестировал:

--C++-kinds=+p

После того, как объявления помечены,оба будут отображаться как результаты, когда вы пытаетесь перейти к тегу.Если вы попали в декларацию, когда хотите получить определение, или наоборот, введите «Cu M-».чтобы перейти к следующему совпадению.

Я думаю, что GNU Global может также позволить вам переходить к объявлениям, хотя с тех пор, как я их использовал, прошло некоторое время.Однако в синтаксическом анализаторе Global C ++ есть некоторые ошибки ...

...