leg*_*cia 46
来自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.
Run Code Online (Sandbox Code Playgroud)
Emacs 24.4于2014年10月20日发布.
eval-after-load被认为是不正常的,因为它是一个函数,而不是一个宏,因此需要引用其中的代码,这意味着它不能进行字节编译.它也只接受一个表单,所以如果你有多个表单,你需要使用progn.例如:
(eval-after-load "foo"
'(progn
(setq foo 42)
(setq bar 17)))
Run Code Online (Sandbox Code Playgroud)
相同的版本with-eval-after-load将是:
(with-eval-after-load "foo"
(setq foo 42)
(setq bar 17))
Run Code Online (Sandbox Code Playgroud)
正如Clément在评论中指出的那样,一个缺点with-eval-after-load是您不能依赖于相关模块中定义的宏,而eval-after-load您可以确定这些宏已定义并可供使用.这在emacs-devel上讨论过.
| 归档时间: |
|
| 查看次数: |
5913 次 |
| 最近记录: |