Je suis récemment passé d' Eclipse CDT à Spacemacs avec la couche C ++ comme environnement de développement.
Jusqu'à présent ... génial! Cependant, l'une des choses qui me manque à propos d'Eclipse est son indexeur .
En ce moment, j'utilise GNU Global avec la couche gtags . Le problème avec gtags est qu'il s'agit d'un système de marquage , pas d'un indexeur.
Exemple:
La recherche de références pour une fonction appelée set
dans la classe Field
renvoie 165 références dans ma base de code, dont une seule est en fait une référence àField::set
La recherche de références à set
dans CDT renvoie 1 résultat.
Existe-t-il une meilleure solution d'indexation que je peux utiliser dans emacs?
En recherchant en ligne, j'ai trouvé cette page où 3 indexeurs basés sur les clangs sont répertoriés.
Des questions:
- Est-ce que l'un d'eux offrira une meilleure expérience d'indexation?
- Une suggestion sur laquelle utiliser?
- Existe-t-il une meilleure alternative non répertoriée?
Remarque:
J'ai également utilisé clang-complete
pour l'achèvement du code, mais j'ai trouvé que c'était très lent. Insensément lent. ( Je ne suis pas le seul à en faire l'expérience ) Si une solution d'indexation souffrait du même problème, elle ne fonctionnerait pas.
clang-indexer
n'y a eu aucun développement récent, et l'auteur lui-même dit que c'est "rude" - donc je n'essaierai pas cela par-dessus les deux autresrtags
semble être le plus populaire des 3 inscritsRéponses:
Je ne peux dire que pour les étiquettes que j'utilise activement depuis 1-2 ans.
rtags fonctionne comme prévu. Il est basé sur un compilateur et permet une navigation correcte dans le code. Quelque chose que je cherchais depuis 10 ans en tant qu'utilisateur emacs.
La configuration peut être un peu délicate. Je recommande de jeter un œil à cmake-ide, qui fait automatiquement partie de la configuration. https://github.com/atilaneves/cmake-ide
Cet article de blog peut également aider https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /
Vous pouvez également consulter (ou utiliser) ma propre configuration: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el J'utilise une combinaison de cmake- ide (découverte de projet), ironie (pour l'achèvement du code) et rtags (pour la navigation dans le code). Je suis presque sûr que cela pourrait être simplifié car certaines fonctionnalités se chevauchent entre chaque mode, mais le résultat est au niveau que j'attends d'un IDE moderne.
rtags fournit également des fonctionnalités de refactorisation de code, mais il est assez limité (principalement renommer)
la source