Emacs功能的目的是什么(eval-and-compile ...)?

时间:2010-05-25 12:32:07

标签: emacs elisp

我可以阅读文档,所以我不是要求对其进行剪切和粘贴。

我正在努力理解这个功能的动机。

我什么时候想用它?

1 个答案:

答案 0 :(得分:9)

documentation in the Emacs lisp manual确实有一些示例情况似乎可以回答您的问题(而不是文档字符串)。

通过查看Emacs源代码,eval-and-compile用于安静编译器,在编译(和评估)期间使宏/函数可用,或者在宏期间使用特征/版本特定的宏/函数变体汇编

我发现有用的一种用法是ezimage.el。在那里,if语句放在eval-and-compile内有条件地定义宏,具体取决于包是否在Emacs或XEmacs中编译/评估,以及是否存在特定功能。通过在eval-and-compile中包装该条件,可以在编译期间启用适当的宏使用。类似的情况可以在mwheel.el中找到。

同样,如果您想通过fset定义一个函数并在编译期间使用它,则需要使用fset调用eval-and-compile,否则符号 - &gt ;在评估文件之前,函数关联不可用(因为编译对fset的调用只是优化了赋值,它实际上并不执行赋值)。为什么在编译期间需要这个赋值?安静编译器。注意:这只是我对elisp文档中的内容的重新措辞。

我注意到在Emacs代码中有很多用途,它只包含了对require的调用,当你阅读文档时,这听起来很多。我不知道如何解释这些。