希望在兼容旧版 Emacs 的同时不放弃新版 Emacs 新功能的软件包,可以使用 GNU ELPA 上的 Compat 软件包。通过依赖该包,Emacs 可为缺失的功能提供兼容定义。
Compat 的版本号与 Emacs 保持一致,因此除了通过 emacs 软件包声明软件包依赖的最低版本外,还可指定软件包希望使用其定义的最新 Emacs 版本:
;; Package-Requires: ((emacs "27.2") (compat "29.1"))
注意:Compat 为已存在的函数(sort、assoc 等)提供带有扩展功能的替代实现。这些函数可能修改了调用规则(新增可选参数)或行为。这类函数必须通过 compat-function 显式获取,或通过 compat-call 显式调用。我们称其为 扩展定义(Extended Definitions)。与之相对,新增的 添加定义(Added Definitions) 可直接如常调用。
该宏以参数 args 调用兼容函数 fun。
Compat 提供的许多函数可直接调用而无需此宏。但当 Compat 为已有函数提供替代版本时,函数调用必须通过 compat-call。
该宏返回 fun 对应的兼容函数符号。
更便捷的直接调用兼容函数的宏可参见 compat-call。
有关该软件包的使用详情,参见 Usage in "Compat" Manual。若未安装该手册,也可阅读 Compat 在线手册。