在emacs中使用autoload卸载定义的目的是什么?为什么自动加载速度慢?
在ELisp中,您可以使用自动加载cookie跳过对定义的求值。定义仅在使用后进行评估在emacs中使用autoload卸载定义的目的是什么?为什么自动加载速度慢?,emacs,elisp,Emacs,Elisp,在ELisp中,您可以使用自动加载cookie跳过对定义的求值。定义仅在使用后进行评估 ;; File foo.el ;;;###autoload (defun foo () "Doc" 42) (defun bar () "Doc" 43) 所以,如果我理解正确的话,自动加载功能是一种更快加载文件的技巧。但是当我加载foo.el时,为了跳过foo的定义,解释器仍然必须读取整个表单。我不明白为什么它更快。你从哪里得到这种“理解”的?当然不是 自动加载cookie用于提取单独
;; File foo.el
;;;###autoload
(defun foo ()
"Doc"
42)
(defun bar ()
"Doc"
43)
所以,如果我理解正确的话,自动加载功能是一种更快加载文件的技巧。但是当我加载foo.el
时,为了跳过foo的定义,解释器仍然必须读取整个表单。我不明白为什么它更快。你从哪里得到这种“理解”的?当然不是
自动加载cookie用于提取单独自动加载文件中的骨架函数/变量定义。这通常在编译时完成
如果不经过编译步骤,自动加载cookies就没有任何效果。你从哪里得到这种“理解”的?当然不是
自动加载cookie用于提取单独自动加载文件中的骨架函数/变量定义。这通常在编译时完成
如果不经过编译步骤,自动加载cookie将无效。自动加载表单必须单独加载。它们可以从自动加载的cookie生成,但您也可以手动写入它们。例如,在.emacs中,您可以为仅偶尔使用的函数放置自动加载表单,因此它们只能按需加载 例如:
(autoload 'ahk-mode "ahk-mode")
自动加载表单必须单独加载。它们可以从自动加载的cookie生成,但您也可以手动写入它们。例如,在.emacs中,您可以为仅偶尔使用的函数放置自动加载表单,因此它们只能按需加载 例如:
(autoload 'ahk-mode "ahk-mode")
加载文件
foo.el
内容的最简单方法是执行load
。
但是,这是昂贵的,因为您必须读取整个文件
使用autoload
可以告诉emacs:“函数foo
在文件foo.el
中定义”。
这样emacs就不会读取文件,您也不必支付加载费用。当您第一次使用函数foo
时,emacs将通过阅读foo.el
为您找到定义
###“自动加载”
文件中的注释本身不会对“自动加载”执行任何操作。
您需要使用一个程序来获取所有这些定义,并将它们放入文件foo autoloads.el
(或任何其他名称)中。
对于每个函数,它将放一行,告诉emacs哪个文件包含它。
然后在.emacs
中,您将加载foo autoloads.el
而不是foo.el
。
当您第一次使用函数foo
时,emacs将读取foo.el
注意:require
也可以用来代替上面解释中的load
。加载文件foo.el
内容的最简单方法是执行load
。
但是,这是昂贵的,因为您必须读取整个文件
使用autoload
可以告诉emacs:“函数foo
在文件foo.el
中定义”。
这样emacs就不会读取文件,您也不必支付加载费用。当您第一次使用函数foo
时,emacs将通过阅读foo.el
为您找到定义
###“自动加载”
文件中的注释本身不会对“自动加载”执行任何操作。
您需要使用一个程序来获取所有这些定义,并将它们放入文件foo autoloads.el
(或任何其他名称)中。
对于每个函数,它将放一行,告诉emacs哪个文件包含它。
然后在.emacs
中,您将加载foo autoloads.el
而不是foo.el
。
当您第一次使用函数foo
时,emacs将读取foo.el
注意:require
也可以用来代替上面解释中的load
。这个单独的自动加载文件有什么意义?说自动加载可以加速emacs的启动。为什么?自动加载当然会加速启动,但是提供自动加载cookie与自动加载不是一回事。cookie提示外部手动启动的进程,在生成自动加载表达式文件时,它应该包括以下表单。该文件始终称为“loaddefs.el”。您可以使用M-x find library RET loaddefs RET
检查主文件。“这个单独的自动加载文件的要点”是Emacs在调用其中一个函数之前根本不必读取包含自动加载cookie的库。因为如果自动加载在同一个文件中,那么您将一无所获,因为该文件无论如何都会加载。这就是你的问题所在。自动加载表单必须位于一个单独的文件中,因此仅加载表单(快速),并且仅当调用其中一个自动加载函数时,才会加载包含实际定义的整个文件。这个单独的自动加载文件有什么意义?说自动加载可以加速emacs的启动。为什么?自动加载当然会加速启动,但是提供自动加载cookie与自动加载不是一回事。cookie提示外部手动启动的进程,在生成自动加载表达式文件时,它应该包括以下表单。该文件始终称为“loaddefs.el”。您可以使用M-x find library RET loaddefs RET
检查主文件。“这个单独的自动加载文件的要点”是Emacs在调用其中一个函数之前根本不必读取包含自动加载cookie的库。因为如果自动加载在同一个文件中,那么您将一无所获,因为该文件无论如何都会加载。这就是你的问题所在。自动加载表单必须位于单独的文件中,因此只有它们(快速)加载,并且整个文件包含