Meilleur indexeur C ++?


11

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 setdans la classe Fieldrenvoie 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 à setdans 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-completepour 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.


Non pas que je travaille avec des projets C ++, mais peut-être pourriez-vous trouver des contenus utiles sur emacs.zeef.com dans la section C ++?
ReneFroger

J'ai remarqué qu'il clang-indexern'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 autres
Steve Lorimer

rtagssemble être le plus populaire des 3 inscrits
Steve Lorimer

1
À strictement parler, cette question a-t-elle quelque chose à voir avec Emacs?
PythonNut

1
Telle qu'elle est formulée actuellement, cette question est très subjective et devrait donner des réponses principalement basées sur l'opinion. Veuillez modifier votre message pour rendre la question plus concrète.
Dan

Réponses:


4

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)


1
Cela fait deux ans que cette réponse a été acceptée, utilisez-vous toujours rtags? Je suis curieux de savoir si la documentation sur la configuration a été modifiée ou si une configuration plus facile a été introduite. Des informations à ce sujet? Pourriez-vous partager votre fichier d'installation / de configuration?
A_P

@A_P Pour une raison quelconque, je ne vois que votre commentaire maintenant. J'utilise toujours rtags. Vous devriez vérifier à nouveau la page cmake-ide + ma config (lien dans ma réponse). J'ai également automatisé la plupart de l'installation. Vérifiez: github.com/jardon-u/dotfiles/blob/master/install.sh (bien que la version d'emacs ne soit pas la dernière. J'essaierai de la mettre à jour)
log0
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.