我可以阅读文档,所以我并不需要剪切和粘贴。

我正在尝试了解此功能的动机。

我什么时候要使用它?

最佳答案

documentation in the Emacs lisp manual确实有一些示例情况似乎可以回答您的问题(与doc字符串相对)。

从查看Emacs源代码开始,eval-and-compile用于使编译器安静,使宏/函数在编译(和评估)期间可用,或使特定于功能/版本的宏/函数变体在编译期间可用。

我发现有帮助的一种用法是 ezimage.el 。在那里,在if内放了一个eval-and-compile语句,以根据是否在Emacs或XEmacs中对软件包进行了编译/评估以及是否存在特定功能来有条件地定义宏。通过将条件包装在eval-and-compile中,可以在编译期间启用适当的宏用法。在 mwheel.el 中可以找到类似的情况。

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

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

关于emacs - Emacs函数(eval-and-compile ...)的作用是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2904555/

10-13 07:33