Ответ 1
От 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 был выпущен 20 октября 2014 года.
eval-after-load
считается неправильным, потому что это функция, а не макрос, и поэтому требуется, чтобы код внутри него был процитирован, а это значит, что он не может быть скомпилирован по байтам. Он также принимает только одну форму, поэтому, если у вас более одного, вам нужно использовать progn
. Например:
(eval-after-load "foo"
'(progn
(setq foo 42)
(setq bar 17)))
Эквивалентная версия с with-eval-after-load
будет:
(with-eval-after-load "foo"
(setq foo 42)
(setq bar 17))