44.6 兼容旧版 Emacs

希望在兼容旧版 Emacs 的同时不放弃新版 Emacs 新功能的软件包,可以使用 GNU ELPA 上的 Compat 软件包。通过依赖该包,Emacs 可为缺失的功能提供兼容定义。

Compat 的版本号与 Emacs 保持一致,因此除了通过 emacs 软件包声明软件包依赖的最低版本外,还可指定软件包希望使用其定义的最新 Emacs 版本:

;; Package-Requires: ((emacs "27.2") (compat "29.1"))

注意:Compat 为已存在的函数(sortassoc 等)提供带有扩展功能的替代实现。这些函数可能修改了调用规则(新增可选参数)或行为。这类函数必须通过 compat-function 显式获取,或通过 compat-call 显式调用。我们称其为 扩展定义(Extended Definitions)。与之相对,新增的 添加定义(Added Definitions) 可直接如常调用。

Macro: compat-call fun &rest args

该宏以参数 args 调用兼容函数 fun。 Compat 提供的许多函数可直接调用而无需此宏。但当 Compat 为已有函数提供替代版本时,函数调用必须通过 compat-call

Macro: compat-function fun

该宏返回 fun 对应的兼容函数符号。 更便捷的直接调用兼容函数的宏可参见 compat-call

有关该软件包的使用详情,参见 Usage in "Compat" Manual。若未安装该手册,也可阅读 Compat 在线手册