Кращий індексатор C ++?


11

Нещодавно я перейшов з Eclipse CDT на Spacemacs із шаром C ++ як моє середовище розробки.

Поки що ... дивовижно! Однак одне з речей, які я сумую про Eclipse, - це його індекс .

Наразі я використовую GNU Global із шаром gtags . Проблема з gtags полягає в тому, що це система тегів , а не індексатор.

Приклад:

Пошук посилань на функцію, яку називають setу класі, Fieldповертає 165 посилань у мою базу коду, лише одна з яких насправді є посиланням наField::set

Пошук посилань на setCDT повертає 1 результат.

Чи є краще рішення щодо індексації, яке я можу використовувати в emacs?

Шукаючи в Інтернеті, я знайшов цю сторінку, де перераховано 3 індекси на базі кланг.

Запитання:

  • Чи запропонує будь-який із них кращий досвід індексації?
  • Будь-яка пропозиція щодо використання?
  • Чи не вказана краща альтернатива?

Примітка:

Я також використовував 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 також надає засоби рефакторингу коду, але він досить обмежений (переважно перейменування)


1
Минуло два роки, як ця відповідь була прийнята, ви все ще використовуєте rtags? Мені цікаво, чи змінилася документація про налаштування або було запроваджено легше налаштування. Будь-яка інформація про це? Не могли б ви поділитися своїм файлом настройки / конфігурації?
A_P

@A_P Я чомусь бачу лише ваш коментар. Я все ще використовую rtags. Ви повинні знову перевірити сторінку cmake-ide + my config (посилання у моїй відповіді). Я також автоматизував більшу частину встановлення. Перевірте: github.com/jardon-u/dotfiles/blob/master/install.sh (хоча версія Emacs може бути не останньою. Я спробую оновити це)
log0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.