在包含包时设置Info-directory-list的emacs中?

时间:2013-10-10 02:03:36

标签: emacs path initialization package-managers info

我最近转而使用emacs的包管理器packages

从那时起,一些emacs路径变量的设置超出了我在.emacs文件中所做的设置:load-pathInfo-directory-list都得到了包中的东西。但我不明白 这些自定义的地方。

让我们专注于Info-directory-list:在我的.emacs文件中我没有设置它应该是nil(所以稍后当info启动时,它从{{1}初始化然而,对于我的新包装,它已经初始化,并且添加了一些包目录。这会混淆Info-default-directory-list中的dir结构。我检查了自动加载文件,但它们没有设置{ {1}}以任何方式 - 包中没有其他elisp文件(特别是info)。

Info-directory-list变量集在哪里?如何重新控制此变量中的顺序?

1 个答案:

答案 0 :(得分:3)

在评估你的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文件,Info手册和其他文件类型(如图像)。

[...]

  

如果内容目录包含名为dir的文件,则为   假设是使用install-info创建的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))