Org Mode 9.5 rend votre Emacs plus lent ?


Org Mode 9.5 sera la dernière version publiée sur Org ELPA. Comment je le sais ? Ce petit message qui ne cesse d’apparaître dans mon minibuffer dès que j’ouvre un fichier Org.

IMPORTANT: please install Org from GNU ELPA as Org ELPA will close before Org 9.6

Concrètement, qu’est-ce que ça change pour moi, utilisateur lambda d’Emacs ?

Pas grand-chose. Bastien Guerry, l’actuel mainteneur d’Org Mode, et les collaborateurs du projet ont décidé de ne plus publier les prochaines versions d’Org à travers Org ELPA. Cela veut dire que l’installation d’Org se fera des manières suivantes :

  • Pour installer Org (version stable) : passer par GNU ELPA.
  • Pour installer Org contrib (les contributions communautaires) : passer par NonGNU ELPA.
  • Pour installer les dernières versions (potentiellement instables) d’Org : passer par le repo Git.

Toutes les versions d’Org inférieures ou égales à 9.5 resteront pour le moment accessibles via Org ELPA.

Vous êtes prévenus.

Le problème auquel j’ai fait face

Revenons à notre message d’avertissement. Quand j’ouvre un fichier Org, celui-ci met plusieurs secondes pour s’afficher. Sachant que j’utilise de temps à autre un PC portable plus lent, je patiente.

1 seconde.
2 secondes.
3 secondes.
4 secondes.
5 secondes.

Et ouf, miracle ! Mon fichier s’affiche, haut en couleur et plein de jolis caractères.

Pourquoi ces 5 secondes ?

Première étape dans mon aventure : l’outil de profilage intégré dans Emacs.
M-x profiler-start pour lancer le profileur, M-x profiler-stop pour l’arrêter, M-x profiler-report pour afficher le compte-rendu de ses trouvailles.

Mais ici, pas de chance. Rien de suspect qui puisse justifier un temps si long. Bien sûr, Org charge beaucoup de modules, mais ici le temps d’attente est démesuré.


Deuxième étape : désactiver tous les packages liés à Org Mode. Je commente ma config, je relance Emacs, j’ouvre un fichier Org. Toujours les quelques secondes d’attente.


Troisième étape : désactiver toute ma config. Pour ce faire, on lance Emacs avec l’argument -q. Toujours pas mieux.


Dernière étape de mon périple : fouiller dans le code d’Org. Un petit coup de grep dans le dossier d’où est installé Org me permet de trouver le fautif.
Voici le code lié au message :

Dans le fichier org.el :

4967
4968
4969
  (beep)
  (message "IMPORTANT: please install Org from GNU ELPA as Org ELPA will close before Org 9.6")
  (sit-for 5))

Denis Brogniart qui dit ““AH !”


sit-for ? Keskecé ce bidule ?

Et bien la fonction (sit-for t) en Elisp, lance l’affichage, puis attends le nombre t de secondes avant de relancer à nouveau un affichage. Un réaffichage est cependant lancé si une touche est pressée.

Donc j’attendais tout bêtement 5 secondes dans le vent. 🙃

Et le fix le plus simple au monde : kill-sexp (ou le raccourci clavier C-M-k).

Conclusion :

Boostez vos performances Emacsiennes grâce à ma méthode, 100% garantie, 0% remboursée.
(Arrêtez de vous plaindre, vous n’avez rien dépensé.)


Je ne sais toujours pas comment terminer mes articles.
« Un pain vaut mieux que deux choléras. »