Je veux réécrire des parties d'un projet open source. Cela inclut le changement de nom des méthodes. Comment puis-je le faire efficacement dans emacs sur l'ensemble du projet?
Je préfère ne pas utiliser de hacks tels que la recherche et le remplacement dans chaque tampon.
refactoring
Le chat unfun
la source
la source
ropemacs
.Réponses:
J'utilise maintenant
helm-ag
pour trouver toutes les instances du nom de la fonction (recherches dans tous les fichiers, y compris les sous-répertoires, pas seulement dans les tampons ouverts), puis j'utiliseC-c C-e
pour entrer un tampon qui répertorie toutes les correspondances et là, je change le nom de la fonction. Lorsque j'ai terminé, j'appuie surC-c C-c (helm-ag--edit-commit)
pour enregistrer les modifications dans tous les fichiers ouverts.Cela peut sembler déroutant, mais veuillez consulter https://github.com/ShingoFukuyama/helm-swoop
Lorsque vous le serrez, vous pleurerez de larmes de joie qu'une telle merveilleuse fonctionnalité existe.
la source
Puisque vous n'avez pas spécifié la langue, il est difficile de donner de meilleures réponses que «Rechercher et remplacer».
Utilisation de wgrep
Si vous voulez simplement (interactivement) remplacer toutes les instances d'un symbole par un autre, wgrep est votre meilleur choix. Il vous permet de modifier de manière interactive le tampon de résultats grep.
M-x package-install RET wgrep
.M-x rgrep
. Il vous posera quelques questions faciles, puis effectuera une recherche récursive du terme de recherche dans le répertoire que vous avez spécifié.M-x wgrep-change-to-wgrep-mode
. Ce tampon est désormais modifiable. Toutes les modifications que vous apportez ici seront reflétées dans les fichiers eux-mêmes.replace-regexp
ou aquery-replace-regexp
dans ce tampon pour effectuer le refactoring.M-x wgrep-save-all-buffers
etM-x wgrep-finish-edit
.la source
Pour certaines approches génériques, consultez la rubrique " Remplacer entre les fichiers " de la page de recherche et de remplacement du wiki Emacs: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Voir également les réponses à: Utiliser Emacs pour rechercher et remplacer récursivement des fichiers texte qui ne sont pas déjà ouverts .
la source
Vous pouvez utiliser
counsel-rg
suivi de C-c C-opour obtenir une liste de tous les candidats dans un tampon. Appuyez sur wpour les modifier avecwgrep
. Je recommandeiedit
pour renommer les symboles. Appuyez sur C-c C-cpour valider.Dépendances:
counsel
,wgrep
,iedit
Sont sur Melpala source