Identifique automaticamente variáveis ​​obsoletas no arquivo init


8

Quando uma nova versão do Emacs é lançada, geralmente ocorre que algumas variáveis ​​/ comandos / funções se tornam obsoletas. Eles geralmente são marcados como tal na documentação correspondente:

turn-on-eldoc-modeé um alias para eldoc-modein eldoc.el. [...]

Esta função está obsoleta desde 24,4 ; use em eldoc-modevez disso.

Eu gostaria de ter certeza de que não estou fazendo referência a nenhuma variável obsoleta no meu arquivo init, mas também gostaria de evitar verificar tudo manualmente.

Portanto, minha pergunta é : Existe uma maneira de identificar automaticamente todas as variáveis ​​obsoletas no meu arquivo init (que possivelmente também funcionem para pacotes de terceiros instalados através do gerenciador de pacotes)?

Respostas:


12

Byte-compile o arquivo.

Geralmente, é melhor não compilar o arquivo init, mas aqui é útil. O byte-compiler avisará você sobre muitas práticas ruins, entre elas o uso de variáveis ​​ou funções obsoletas.

  1. Basta ligar M-x byte-compile-filee fornecer seu arquivo init.

  2. Depois, exclua o .elcarquivo gerado .


2
Por curiosidade, quais são os motivos para não compilar em bytes o arquivo init?
Dan

4
@ Dan As vantagens são insignificantes. Enquanto isso, ocasionalmente você pode esquecer de recompilar depois de alterá-lo e ficar se perguntando por que suas alterações não surtiram efeito.
Malabarba

4
@ Dan: Além do que Malabarba disse, um determinado arquivo init é às vezes (frequentemente) usado para várias versões do Emacs, e a compilação de bytes pode reduzir esse tipo de portabilidade.
Drew

Caso isso não seja óbvio: você pode compilá-lo em bytes (para ver avisos, etc.) e depois excluir o arquivo *.elc.
Drew

6
É por isso que você deve usar em #'vez de 'para funções. Se você compilar algo com (add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode)o compilador irá avisá-lo.
Malabarba 25/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.