我需要一些帮助来理解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 文件之前,我不明白所使用的语言:
- 它通过在列表中的每个目录中运行名为 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/