Emacs 初始化和加载路径

Emacs initialization and load-path

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

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

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

  1. It adds subdirectories to load-path, by running the file named subdirs.el in each directory in the list.

其中"the list"?

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

After loading the init file is there any standard Emacs initialization files, that scan through .emacs.d and adds subdirectories it finds there?

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

然而,某些 特定 子目录确实会发生这种情况。

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

(And/or when package-initialize is called explicitly,如果你这样做的话。)

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