16 加载

加载 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

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike