Quiero reescribir partes de un proyecto de código abierto. Esto incluye los métodos de cambio de nombre. ¿Cómo puedo hacer eso de manera eficiente en emacs en todo el proyecto?
Prefiero no usar hacks como buscar y reemplazar en cada búfer.
refactoring
El gato no divertido
fuente
fuente
ropemacs
.Respuestas:
Ahora uso
helm-ag
para encontrar todas las instancias del nombre de la función (busca en todos los archivos, incluidos subdirectorios, no solo en buffers abiertos), y luego usoC-c C-e
para ingresar un buffer que enumera todas las coincidencias y allí cambio el nombre de la función. Cuando termine, presionoC-c C-c (helm-ag--edit-commit)
para almacenar los cambios en todos los archivos abiertos.Esto puede sonar confuso, pero consulte https://github.com/ShingoFukuyama/helm-swoop
Cuando lo asimiles, llorarás de alegría porque existe una funcionalidad tan maravillosa.
fuente
Como no especificó el idioma, es difícil dar mejores respuestas que "Buscar y reemplazar".
Usando wgrep
Si solo desea reemplazar (interactivamente) todas las instancias de un símbolo con otro, wgrep es su mejor opción. Le permite editar interactivamente el búfer de resultados grep.
M-x package-install RET wgrep
.M-x rgrep
. Le hará algunas preguntas fáciles y luego realizará una búsqueda recursiva del término de búsqueda dentro del directorio que especificó.M-x wgrep-change-to-wgrep-mode
. Este búfer ahora es editable. Cualquier cambio que realice aquí se reflejará en los propios archivos.replace-regexp
o aquery-replace-regexp
en este búfer para refactorizar.M-x wgrep-save-all-buffers
yM-x wgrep-finish-edit
.fuente
Para algunos enfoques genéricos, busque debajo del encabezado " Reemplazar a través de archivos " en la página de búsqueda y reemplazo de Emacs Wiki: http://www.emacswiki.org/emacs/CategorySearchAndReplace
También vea las respuestas a: Uso de Emacs para buscar y reemplazar recursivamente en archivos de texto que aún no están abiertos .
fuente
Puede usar
counsel-rg
seguido de C-c C-opara obtener una lista de todos los candidatos en un búfer. Presione wpara editarlos conwgrep
. Recomiendoiedit
para cambiar el nombre de los símbolos. Presione C-c C-cpara comprometerse.Dependencias:
counsel
,wgrep
,iedit
Están en Melpafuente