本节说明 load 函数尝试的具体后缀相关技术细节。
该变量是一个后缀列表,用于标识 Emacs Lisp 文件(编译版或源码版)。
列表中不应包含空字符串。当 load 为指定文件名附加 Lisp 后缀时,
会按顺序使用这些后缀。其标准值为 (".elc" ".el"),
对应上一节所述的行为逻辑。
该变量是一个后缀列表,用于标识同一文件的不同存储形式。
此列表通常应以空字符串开头。当 load 搜索文件时,
会先按顺序将该列表中的后缀附加到文件名后进行查找,
再尝试其他文件名。
启用自动压缩模式时,会将 jka-compr-load-suffixes 中的后缀添加到该列表;
禁用自动压缩模式时,则会移除这些后缀。
若禁用自动压缩模式,load-file-rep-suffixes 的标准值为 ("");
鉴于 jka-compr-load-suffixes 的标准值是 (".gz"),
启用自动压缩模式时,load-file-rep-suffixes 的标准值为 ("" ".gz")。
当 load 函数的 must-suffix 参数非 nil 时,
该函数返回 load 应按顺序尝试的所有后缀列表。
此函数会同时考虑 load-suffixes 和 load-file-rep-suffixes 的值。
若 load-suffixes、jka-compr-load-suffixes 和 load-file-rep-suffixes
均为标准值:启用自动压缩模式时,返回 (".elc" ".elc.gz" ".el" ".el.gz");
禁用自动压缩模式时,返回 (".elc" ".el")。
综上,load 通常先尝试 (get-load-suffixes) 返回值中的后缀,
再尝试 load-file-rep-suffixes 中的后缀。
若 nosuffix 非 nil,则跳过前一组后缀;
若 must-suffix 非 nil,则跳过后一组后缀。
若该选项非 nil,load 不会在找到第一个存在的后缀时停止,
而是测试所有后缀,并使用修改时间最新的文件。