【问题标题】:eval-after-load does not execute the formseval-after-load 不执行表单
【发布时间】:2014-02-21 14:26:51
【问题描述】:

根据 elisp 文档http://www.gnu.org/software/emacs/manual/html_node/elisp/Hooks-for-Loading.htmleval-after-load 应该评估表单,而不管是否加载了库(在本例中为“org”)。但是下面的表达式似乎对表单没有任何影响(消息“HELLO”)。

(eval-after-load "org" '(message "HELLO"))

预期的结果是找到打印在 *Message* 缓冲区上的字符串“HELLO”,这似乎没有发生。

【问题讨论】:

  • 为我工作。也许你没有加载这条线。尝试从*scratch* 评估它。
  • 感谢您的测试和报告。在 ubuntu 12.04 虚拟机中使用已编译的 emacs 版本 24.3.1。尝试从 scratch 进行评估,结果是一样的。关于如何调试此问题的任何想法。
  • C-j 中的 *scratch* 是否会导致 nil 或“HELLO”?
  • 可能是自动加载。首次调用自动加载的 org 函数将需要 org.如果您不使用 org 函数,则不需要 org。
  • @Talespin_Kit,无论是否加载库,都不会执行表单。每当加载库时,都会评估表单。如果库已经加载,它将立即评估表单。对于 Magnar 的配置,org-setup.el 不是立即“需要”,而是在加载 org 时“需要”。

标签: emacs elisp


【解决方案1】:

您似乎误解了手册,无论库是否加载,表单都执行。每当加载库时,都会评估表单。如果库已经加载,它将立即评估表单。对于 Magnar 的配置,org-setup.el 不是立即“需要”,而是在加载 org 时“需要”。

【讨论】:

  • 是的,eval-after-load 不适用于加载库;它用于对正在加载的库做出反应
猜你喜欢
  • 2011-02-13
  • 2018-03-05
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多