代码之家  ›  专栏  ›  技术社区  ›  halloleo

在emacs中,当包含包时,谁在设置信息目录列表?

  •  5
  • halloleo  · 技术社区  · 12 年前

    我最近改用emacs的包管理器 packages .

    从那以后,一些emacs路径变量的设置超出了我在 .emacs 文件:两者 load-path Info-directory-list 用包裹里的东西固定住。但我不明白 哪里 这些定制已经完成。

    让我们集中精力 信息目录列表 :在我的 .emacs公司 文件我没有设置它,所以它应该为零(所以以后当 info 启动,初始化自 Info-default-directory-list 然而,对于我的新包装,它已经初始化,并添加了一些包装目录。这把我搞砸了 dir 中的结构 信息 。我已经检查了自动加载文件,但它们没有设置 信息目录列表 以任何方式-包中没有其他elisp文件( pandoc-mode 特别是)这样做。

    在哪里 信息目录列表 变量集,以及如何重新控制该变量中的顺序?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Community Mohan Dere    8 年前

    评估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
      )
    

    你也可以打电话 程序包初始化 您自己,前提是您确保预先设置了任何必要的与包相关的变量。看见 Emacs 24 Package System Initialization Problems 详细信息。

    至于如何以及为什么 Info-directory-list 正在修改,中有关该方面的手册注释 (elisp) Multi-file Packages :

    创建多文件包不如创建单个文件方便 包,但它提供了更多功能:它可以包括多个Emacs Lisp文件、信息手册和其他文件类型(如图像)。

    [...]

    如果内容目录包含名为 dir ,这是 假设是一个信息目录文件,由 install-info .*注意 调用安装信息:(texinfo)调用安装信息。相关 信息文件也应该出现在内容目录中。在这个 在这种情况下,Emacs会自动将内容目录添加到 信息目录列表 当程序包被激活时。

    明确地 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))
    
    推荐文章