Emacs 初始化和加载路径



我需要一些帮助来理解Emacs初始化和加载路径变量构造。因此,$HOME 中有 init 文件 .emacs(或 .emacs.d/init.el)文件,它首先加载,在即将读取此文件时,load-path 已经包含来自/etc、/usr/* 的目录,例如来自 Emacs 发行版本身的目录。

加载 init 文件后,是否有任何标准的 Emacs 初始化文件,扫描 .emacs.d 并添加它在那里找到的子目录?

Emacs 手册在第一个 Emacs 初始化步骤 (https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html#Startup-Summary) 中提到了 subdirs.el 的一些内容,但它发生在加载 init 文件之前,我不明白所使用的语言:

  1. 它通过在列表中的每个目录中运行名为 subdirs.el 的文件,将子目录添加到加载路径。

在哪个"名单"中?

在此步骤中,"列表"实际上是 load-path 中预加载的安装值。其余的要点在执行的步骤中很清楚。例如,一些 Debian/Ubuntu 发行版在 /etc/emacsXX 中添加了一些系统范围的配置文件,当他的软件包被编译为 load-path 中的一些初始路径时,这些文件在源代码中是硬编码的。

加载 init 文件后,是否有任何标准的 Emacs 初始化文件,扫描 .emacs.d 并添加它在那里找到的子目录?

一般来说,不 -- Emacs 不会自动将任意子目录添加到您的load-path(您也不希望它这样做)。

但是,对于某些特定的子目录,确实会发生这种情况。

从 Emacs 24 开始,内置的软件包管理器会在评估您的 init 文件后自动将您安装的 ELPA 软件包目录添加到load-path中。

(和/或显式调用package-initialize时,如果您这样做。

默认情况下,您的 ELPA 软件包处于~/.emacs.d/elpa/

最新更新