Quero reescrever partes de um projeto de código-fonte aberto. Isso inclui renomear métodos. Como posso fazer isso de maneira eficiente no emacs em todo o projeto?
Prefiro não usar hacks, como pesquisar e substituir em cada buffer.
ropemacs
.
Quero reescrever partes de um projeto de código-fonte aberto. Isso inclui renomear métodos. Como posso fazer isso de maneira eficiente no emacs em todo o projeto?
Prefiro não usar hacks, como pesquisar e substituir em cada buffer.
ropemacs
.
Respostas:
Agora eu uso helm-ag
para encontrar todas as instâncias do nome da função (pesquisa em todos os arquivos, incluindo subdiretórios, não apenas nos buffers abertos) e, em seguida, uso C-c C-e
para inserir um buffer que lista todas as correspondências e aí altero o nome da função. Ao terminar, pressione C-c C-c (helm-ag--edit-commit)
para armazenar as alterações em todos os arquivos abertos.
Isso pode parecer confuso, mas consulte https://github.com/ShingoFukuyama/helm-swoop
Quando você grunhir, chorará de alegria por haver uma funcionalidade tão maravilhosa.
Como você não especificou o idioma, é difícil fornecer respostas melhores do que "Pesquisar e substituir".
Se você quiser (interativamente) substituir todas as instâncias de um símbolo por outro, o wgrep é sua melhor aposta. Permite editar interativamente o buffer de resultados grep.
M-x package-install RET wgrep
.M-x rgrep
. Ele fará algumas perguntas fáceis e fará uma pesquisa recursiva pelo termo de pesquisa dentro do diretório especificado.M-x wgrep-change-to-wgrep-mode
. Este buffer agora é editável. Quaisquer alterações feitas aqui serão refletidas nos próprios arquivos.replace-regexp
ou a query-replace-regexp
neste buffer, para fazer a refatoração.M-x wgrep-save-all-buffers
e M-x wgrep-finish-edit
.Para algumas abordagens genéricas, consulte o título " Substituir arquivos " na página de pesquisa e substituição do Wiki Emacs: http://www.emacswiki.org/emacs/CategorySearchAndReplace
Consulte também as respostas para: Usando o Emacs para localizar e substituir recursivamente em arquivos de texto que ainda não estão abertos .