我正在尝试对GNU Emacs 23进行编程,以根据需要延迟发送require
命令,而不是在.emacs
文件中预先发出。如果我想延迟执行load
命令,可以使用autoload
。但是require
和load
采用不同种类的参数。
是否有预定义的函数为require
做的工作与autoload
对load
做的工作相同?如果没有,人们会建议我使用哪些工具进行自我滚动?
最佳答案
require
在load
和autoload
之间没有区别。 require
只是load
的前端,或多或少可以归结为:
(defun require (feature &optional filename noerror)
(unless (featurep feature)
(let ((filename (or filename (symbol-name feature))))
(load filename noerror))))
如您所见,给
require
赋予的符号名称等于给给load
的文件名。实际上,在Emacs session 中评估的第一个(require 'foo)
与(load "foo")
等效。因此,您可以将
(auto-load 'foo-function "foo")
用作库foo-function
中的foo
,并可以使用(require 'foo)
进行加载。