文档是这么说的:
package-initialize is an interactive autoloaded compiled Lisp function in ‘package.el’. (package-initialize &optional NO-ACTIVATE) Load Emacs Lisp packages, and activate them. The variable ‘package-load-list’ controls which packages to load. If optional arg NO-ACTIVATE is non-nil, don’t activate packages. If ‘user-init-file’ does not mention ‘(package-initialize)’, add it to the file. If called as part of loading ‘user-init-file’, set ‘package-enable-at-startup’ to nil, to prevent accidentally loading packages twice. It is not necessary to adjust ‘load-path’ or ‘require’ the individual packages after calling ‘package-initialize’ -- this is taken care of by ‘package-initialize’.
调用 (package-initialize)
之后:
- 加载
package-load-alist
所指定(默认是'(all)
)的 packages。 - 设置
package-enable-at-startup
,防止 package 重复加载 // 如何验证? - 不必(不应?)修改
load-path
或require
额外的 package // 没看懂。(package-initialize)
通常放在 init.el 顶层,后面修改load-path
不是很正常吗?
比较确定的是,在使用 package-
系列函数(例如 (package-install 'dash)
) 之前必需调用 (package-initialize)
。