¿Qué es “with-eval-after-load” en Emacs Lisp?
macros elisp (1)
Encontré la macro with-eval-after-load
al intentar instalar persp-mode
desde here . Pero no puedo encontrar la macro dentro de Emacs y / o en Google. ¿Dónde se define? ¿Es parte del estándar Emacs Lisp?
Desde etc/NEWS
:
* Lisp Changes in Emacs 24.4
...
** New macro `with-eval-after-load''.
This is like the old `eval-after-load'', but better behaved.
Emacs 24.4 fue lanzado el 20 de octubre de 2014.
eval-after-load
se considera de mal comportamiento porque es una función, no una macro, y por lo tanto requiere que se cite el código dentro de ella, lo que significa que no se puede compilar por bytes. También acepta un solo formulario, por lo que si tiene más de uno, debe usar progn
. Por ejemplo:
(eval-after-load "foo"
''(progn
(setq foo 42)
(setq bar 17)))
La versión equivalente con with-eval-after-load
sería:
(with-eval-after-load "foo"
(setq foo 42)
(setq bar 17))