52 votes

Comment puis-je refactoriser le code source C ++ en utilisant emacs?

Je suis surtout intéressé par les changements automatiques de C ++ et de méthode / nom de classe / signature.

35voto

muede Points 71

Dans les versions récentes d'Emacs (24), Semantic peut le faire.

  1. Affichez le tampon Symref avec C-, g .
  2. Appuyez sur Cc Ce pour ouvrir toutes les références.
  3. Renommer avec R.

26voto

Alex Ott Points 14329

Si vous pouvez programmer dans elisp, vous pouvez rechercher une combinaison de cedet + srecode à partir des bibliothèques CEDET - elle fournit tous les instruments pour cette tâche - trouver des appelants de fonctions, obtenir une signature, etc. Mais vous devez créer vous-même un outil réfractaire à l'aide de ces instruments

13voto

T.E.D. Points 26829

Je le fais beaucoup, donc je suis axiously en attente d'autres réponses aussi.

Les seuls trucs que je connais sont vraiment de base. Voici mes meilleurs amis dans Emacs lors d'un refactoring de code:

M-x query-replace

Cela permet de faire une recherche globale et de le remplacer. Vous allez faire une tonne lorsque vous déplacez des méthodes et communément des données accessibles à d'autres classes ou les espaces de noms.

C-x 3

Cela vous donne un affichage avec deux tampons de côté par côté. Vous pouvez ensuite procéder à la charge de différents fichiers entre eux, et déplacez votre curseur de l'un à l'autre avec C-x o. C'est plutôt un truc de base, mais je le mentionne parce que de la façon dont puissant, il fait la suivante...

C-x (
(type any amount of stuff and/or emacs commands here)
C-x )

C'est une façon de définir une macro dans emacs. Toutes les fois que vous vous trouvez avoir besoin de faire la même chose encore et encore tout un tas de code (et c'est trop complexe pour query-replace), c'est une bouée de sauvetage. Si vous vous trompez, vous pouvez frapper C-g pour arrêter la définition de la macro, puis annuler (C-_) jusqu'à ce que vous êtes de retour où vous avez commencé. Les touches pour appeler la macro C-x e. Si vous souhaitez faire un tas de fois, vous pouvez frapper Esc "et saisissez un nombre premier. Par exemple: Esc 100 C-x e va essayer d'invoquer votre macro 100 fois.

(Note: sous Windows, vous pouvez obtenir "Méta" en appuyant sur la touche Échap, ou maintenez la touche Alt).

8voto

jamesnvc Points 848

Car quelque part entre les outils de refactoring et les expressions rationnelles simples, depuis Emacs 22, vous pouvez incorporer des expressions elisp arbitraires dans votre texte de remplacement, ce qui vous permet d’effectuer une manipulation de texte incroyablement puissante. Steve Yegge a écrit un bon article à ce sujet il y a quelque temps.

7voto

Greg Rogers Points 18119

Un de mes amis jouait avec xrefactory et a dit que cela fonctionnait plutôt bien. Ce n'est pas bon marché cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X