加载 Lisp 代码文件,就是将其内容以 Lisp 对象的形式载入 Lisp 环境。 Emacs 会查找并打开该文件,读取文本,对每个表达式求值,然后关闭文件。 这样的文件也被称为 Lisp library。
加载函数会对文件中的所有表达式求值,这与 eval-buffer
函数对缓冲区中所有表达式求值的方式类似。
区别在于:加载函数读取并求值的是磁盘上的文件文本,
而非 Emacs 缓冲区中的文本。
被加载的文件必须包含 Lisp 表达式,可以是源代码,也可以是字节编译后的代码。 文件中的每个表达式都称为 顶层表达式(top-level form)。 可加载文件中的表达式没有特殊格式; 文件中的任意表达式都可以直接输入到缓冲区中并在那里求值。 (事实上,绝大多数代码都是这样测试的。) 这些表达式通常是函数定义和变量定义。
Emacs 还可以加载编译后的动态模块:这类共享库可为 Emacs Lisp 程序 提供额外功能,就像用 Emacs Lisp 编写的软件包一样。 加载动态模块时,Emacs 会调用一个特定名称的初始化函数, 该函数必须由模块实现,并将新增的函数和变量暴露给 Emacs Lisp 程序。
如需了解某些 Emacs 原语预先需要的外部库的按需加载方式,see Dynamically Loaded Libraries。