Identifier automatiquement les variables obsolètes dans le fichier init

8

Lorsqu'une nouvelle version d'Emacs est publiée, il arrive généralement que certaines variables / commandes / fonctions deviennent obsolètes. Ils sont généralement marqués comme tels dans la documentation correspondante:

turn-on-eldoc-modeest un alias pour eldoc-modein eldoc.el. [...]

Cette fonction est obsolète depuis 24.4 ; utiliser à la eldoc-modeplace.

Je voudrais m'assurer que je ne fais référence à aucune variable obsolète dans mon fichier init, mais je voudrais également éviter de vérifier le tout manuellement.

Ma question est donc la suivante : existe-t-il un moyen d'identifier automatiquement toutes les variables obsolètes dans mon fichier init (qui peut également fonctionner pour les packages tiers installés via le gestionnaire de packages)?

itsjeyd
la source

Réponses:

12

Compilez le fichier en octets.

En général, il est préférable de ne pas compiler en octets votre fichier init, mais ici c'est utile. Le compilateur d'octets vous avertira de nombreuses mauvaises pratiques, parmi lesquelles l'utilisation de variables ou de fonctions obsolètes.

  1. Appelez M-x byte-compile-fileet donnez votre fichier init.

  2. Ensuite, assurez-vous de supprimer le .elcfichier généré .

Malabarba
la source
2
Par curiosité, quelles sont les raisons de ne pas compiler par octets le fichier init?
Dan
4
@Dan Les avantages sont négligeables. Pendant ce temps, vous pouvez parfois oublier de recompiler après l'avoir modifié et vous demander pourquoi vos modifications n'ont aucun effet.
Malabarba
4
@Dan: En plus de ce que Malabarba a dit, un fichier init donné est parfois (souvent) utilisé pour plusieurs versions d'Emacs, et la compilation d'octets peut réduire ce type de portabilité.
attiré
Juste au cas où ce n'est pas évident: vous pouvez le compiler en octets (pour voir les avertissements, etc.) puis supprimer le fichier *.elc.
Drew
6
C'est pourquoi vous devez utiliser #'au lieu de 'pour les fonctions. Si vous compilez quelque chose avec (add-hook 'emacs-lisp-mode-hook #'turn-on-eldoc-mode)le compilateur, vous en serez averti.
Malabarba