我可以阅读文档,所以我不是要求对其进行剪切和粘贴。
我正在努力理解这个功能的动机。
我什么时候想用它?
答案 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
的调用,当你阅读文档时,这听起来很多。我不知道如何解释这些。