Identifica automaticamente le variabili obsolete in init-file


8

Quando viene rilasciata una nuova versione di Emacs, di solito alcune variabili / comandi / funzioni diventano obsolete. Di solito sono contrassegnati come tali nella documentazione corrispondente:

turn-on-eldoc-modeè un alias per eldoc-modein eldoc.el. [...]

Questa funzione è obsoleta dal 24.4 ; usa eldoc-modeinvece.

Mi piacerebbe essere sicuro di non fare riferimento a nessuna variabile obsoleta nel mio file init, ma vorrei anche evitare di controllare tutto manualmente.

Quindi la mia domanda è : c'è un modo per identificare automaticamente tutte le variabili obsolete nel mio file init (che probabilmente funziona anche per i pacchetti di terze parti installati tramite il gestore dei pacchetti)?

Risposte:


12

Byte-compilare il file.

Generalmente, è meglio non compilare byte il file init, ma qui è utile. Il compilatore di byte ti avvertirà di molte cattive pratiche, tra cui l'uso di variabili o funzioni obsolete.

  1. Basta chiamare M-x byte-compile-filee dare il tuo file init.

  2. Successivamente, assicurati di eliminare il .elcfile generato .


2
Per curiosità, quali sono i motivi per non compilare byte il file init?
Dan

4
@Dan I vantaggi sono trascurabili. Nel frattempo, di tanto in tanto potresti dimenticare di ricompilare dopo averlo modificato e lasciarti chiedersi perché i tuoi cambiamenti non abbiano alcun effetto.
Malabarba,

4
@Dan: Oltre a quanto detto da Malabarba, un dato file init è talvolta (spesso) usato per più versioni di Emacs e la compilazione di byte può ridurre questo tipo di portabilità.
Ha

Nel caso in cui non sia ovvio: è possibile compilarlo in byte (per vedere gli avvisi ecc.) E quindi eliminare il *.elc.
Disegnò il

6
Ecco perché dovresti usare #'invece che 'per le funzioni. Se compili qualcosa con (add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode)il compilatore ti avviserà.
Malabarba,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.