Лучший индексатор C ++?

11

Недавно я переключился с Eclipse CDT на Spacemacs со слоем C ++ в качестве среды разработки.

Пока ... круто! Тем не менее, одна вещь, которую мне не хватает в Eclipse - это его индексатор .

В данный момент я использую GNU Global со слоем gtags . Проблема с gtags в том, что это система тегов , а не индексатор.

Пример:

Поиск ссылок для функции, вызываемой setв классе, Fieldвозвращает 165 ссылок в моей кодовой базе, только одна из которых на самом деле является ссылкой наField::set

Поиск ссылок на setCDT возвращает 1 результат.

Есть ли лучшее решение для индексирования, которое я могу использовать в emacs?

Ища в Интернете, я нашел эту страницу, где перечислены 3 clang основанных индексатора.

Вопросов:

  • Будет ли какой-либо из них предлагать лучший опыт индексирования?
  • Любое предложение, на котором использовать?
  • Есть ли лучшая альтернатива не в списке?

Замечания:

Я также использовал clang-completeдля завершения кода, но обнаружил, что это очень медленно. Необычайно медленный ( Я не единственный, кто испытал это ) Если какое-либо решение по индексированию страдает от той же проблемы, оно не будет работать.

Стив Лоример
источник
Не то чтобы я работал с проектами C ++, но, возможно, вы могли бы найти полезное содержимое на emacs.zeef.com в разделе C ++?
ReneFroger
Я заметил, что clang-indexerэто не имело никакого недавнего развития, и сам автор говорит, что это "грубо" - таким образом, я не буду пробовать это по двум другим
Стив Лоример
rtagsкажется, самый популярный из 3-х перечисленных
Стив Лоример
1
Строго говоря, имеет ли этот вопрос какое-либо отношение к Emacs?
PythonNut
1
Как в настоящее время сформулировано, этот вопрос очень субъективен и, вероятно, даст ответы, которые основаны главным образом на мнении. Пожалуйста, отредактируйте свой пост, чтобы сделать вопрос более конкретным.
Дан

Ответы:

4

Для rtags я могу сказать только то, что активно использую последние 1-2 года.

rtags работает как положено. Он основан на компиляторе и обеспечивает правильную навигацию по коду. Что-то, что я искал последние 10 лет как пользователь emacs.

Установка может быть немного сложнее. Я рекомендую взглянуть на cmake-ide, который выполняет часть настройки автоматически. https://github.com/atilaneves/cmake-ide

Этот блог также может помочь https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /

Вы также можете посмотреть (или использовать) мою собственную конфигурацию: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Я использую комбинацию cmake- ide (открытие проекта), ирония (для завершения кода) и rtags (для навигации по коду). Я почти уверен, что это можно упростить, поскольку некоторые функции перекрываются между каждым режимом, но результат на уровне, которого я ожидаю от современной IDE.

rtags также предоставляет возможности рефакторинга кода, но он довольно ограничен (в основном, переименование)

log0
источник
1
Прошло два года с тех пор, как этот ответ был принят, вы все еще используете rtags? Мне любопытно, изменилась ли документация по настройке или появилась более простая установка. Есть информация об этом? Не могли бы вы поделиться своим файлом настройки / конфигурации?
A_P
@A_P По какой-то причине я вижу только ваш комментарий сейчас. Я все еще использую rtags. Вы должны проверить еще раз страницу cmake-ide + мой конфиг (ссылка в моем ответе). Я также автоматизировал большую часть установки. Проверьте: github.com/jardon-u/dotfiles/blob/master/install.sh (хотя версия emacs может быть не самой последней. Я попытаюсь обновить это)
log0