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.
refactoring
The Unfun Cat
fonte
fonte
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, usoC-c C-e
para inserir um buffer que lista todas as correspondências e aí altero o nome da função. Ao terminar, pressioneC-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.
fonte
Como você não especificou o idioma, é difícil fornecer respostas melhores do que "Pesquisar e substituir".
Usando wgrep
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 aquery-replace-regexp
neste buffer, para fazer a refatoração.M-x wgrep-save-all-buffers
eM-x wgrep-finish-edit
.fonte
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 .
fonte
Você pode usar
counsel-rg
seguido por C-c C-opara obter uma lista de todos os candidatos em um buffer. Pressione wpara editá-los comwgrep
. Eu recomendoiedit
para renomear símbolos. Pressione C-c C-cpara confirmar.Dependências:
counsel
,wgrep
,iedit
Estão em Melpafonte