在评估了您的 init 文件之后,Emacs 调用package-initialize
(听起来像)。初始化包后,Emacs 运行after-init-hook
,所以如果你想操作在包初始化过程中被修改的变量,你可以在你的 init 文件中放入以下内容:
(add-hook 'after-init-hook 'my-after-init-hook)
(defun my-after-init-hook ()
"After package initialisation."
;; do something with Info-directory-list
)
您也可以调用package-initialize
自己,前提是您确保预先设置了任何必要的包相关变量。有关详细信息,请参阅Emacs 24 包系统初始化问题。
至于Info-directory-list
修改方式和原因,手册对此方面的评论(elisp) Multi-file Packages
如下:
创建多文件包不如创建单文件包方便,但它提供了更多功能:它可以包含多个 Emacs Lisp 文件、一个 Info 手册和其他文件类型(如图像)。
[...]
如果内容目录包含一个名为 的文件dir
,则假定这是一个使用install-info
. *注意调用安装信息:(texinfo)调用安装信息。相关的信息文件也应该存在于内容目录中。在这种情况下,Emacs 会在激活包时自动添加内容目录
Info-directory-list
。
具体来说,package-activate-1
这样做:
(when (file-exists-p (expand-file-name "dir" pkg-dir))
;; FIXME: not the friendliest, but simple.
(require 'info)
(info-initialize)
(push pkg-dir Info-directory-list))