在包含软件包时设置Info-directory-list的emacs中?
我最近转向使用emacs的包管理器packages
。在包含软件包时设置Info-directory-list的emacs中?
从那时起,一些emacs路径变量的设置超出了我在我的.emacs
文件中的范围:load-path
和Info-directory-list
都会与来自软件包的东西进行交互。但我不明白其中这些定制完成。
让我们集中于Info-directory-list
:在我.emacs
文件我不设置它,所以它应该是零(这样以后当info
启动时,它从Info-default-directory-list
初始化但是与我的新包装它已经intialised和一些包。目录添加这打乱了我的dir
结构info
我已经检查了自动加载的文件,但没有设置Info-directory-list
以任何方式 - 。而在包装没有其他的elisp文件(pandoc-mode
尤其是)这样做
Info-directory-list
变量集在哪里,我如何重新控制这个变量中的订单?
评估完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 Package System Initialization Problems。
至于如何以及为什么Info-directory-list
被修改,在(elisp) Multi-file Packages
这方面的手册评论:
多文件包是创造出比单个文件 包不太方便,但它提供更多功能:它可以包括多个Emacs Lisp文件,信息手册以及其他文件类型(如图像)。
[...]
如果内容目录包含一个名为
dir
文件,这是 假定与install-info
做出了信息目录文件。 *注意 调用install-info:(texinfo)调用install-info。相关的 信息文件也应该出现在内容目录中。在这个 的情况下,当包被激活时,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))
PS:我曾经怀疑'包initialize'是罪魁祸首,所以我评论它在我的.emacs文件,但我不知道emacs在任何情况下都会调用它... – halloleo
@halloleo @phils任何想法为什么'Info-directory-list'包含许多相同包的条目?例如。我有8个条目用于'.emacs.d/elpa/magit-20150608.1139'。 – user3156459