Недавно я переключился с Eclipse CDT на Spacemacs со слоем C ++ в качестве среды разработки.
Пока ... круто! Тем не менее, одна вещь, которую мне не хватает в Eclipse - это его индексатор .
В данный момент я использую GNU Global со слоем gtags . Проблема с gtags в том, что это система тегов , а не индексатор.
Пример:
Поиск ссылок для функции, вызываемой set
в классе, Field
возвращает 165 ссылок в моей кодовой базе, только одна из которых на самом деле является ссылкой наField::set
Поиск ссылок на set
CDT возвращает 1 результат.
Есть ли лучшее решение для индексирования, которое я могу использовать в emacs?
Ища в Интернете, я нашел эту страницу, где перечислены 3 clang основанных индексатора.
Вопросов:
- Будет ли какой-либо из них предлагать лучший опыт индексирования?
- Любое предложение, на котором использовать?
- Есть ли лучшая альтернатива не в списке?
Замечания:
Я также использовал clang-complete
для завершения кода, но обнаружил, что это очень медленно. Необычайно медленный ( Я не единственный, кто испытал это ) Если какое-либо решение по индексированию страдает от той же проблемы, оно не будет работать.
clang-indexer
это не имело никакого недавнего развития, и сам автор говорит, что это "грубо" - таким образом, я не буду пробовать это по двум другимrtags
кажется, самый популярный из 3-х перечисленныхОтветы:
Для 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 также предоставляет возможности рефакторинга кода, но он довольно ограничен (в основном, переименование)
источник