最新のEmacsリリースで導入された新機能を活用しつつ、旧バージョンのEmacsもサポートしたいパッケージは、GNU ELPAのCompatパッケージを利用できます。このパッケージに依存することで、Emacsは不足している機能に対する互換性定義を提供できます。
Compatのバージョン管理はEmacsに準拠しているため、パッケージが依存している最古のバージョン(emacs-package経由)に加えて、パッケージが定義の利用を希望するEmacsの最新バージョンを指定することも可能です:
;; Package-Requires: ((emacs "27.2") (compat "29.1"))
なお、Compatでは、すでに定義されている関数(sort、assoc、…)に対して、機能を拡張した代替関数を提供しています。これらの関数は、呼び出し規約(追加のオプション引数)が変更されていたり、動作が変更されていたりする場合があります。これらの関数は、compat-functionを用いて明示的に参照するか、compat-callを用いて明示的に呼び出す必要があります。これらを拡張定義と呼びます。これに対し、新たに追加された定義は、通常通り呼び出すことができます。
このマクロは、互換性関数 fun を args
と共に呼び出します。Compat が提供する多くの関数は、このマクロを介さずに直接呼び出すことができます。ただし、Compat
が既存の関数の代替バージョンを提供している場合は、関数呼び出しを compat-call
経由させる必要があります。
このマクロは、fun
に対応する互換性関数のシンボルを返します。互換性関数を直接呼び出すためのより便利なマクロについては、compat-call を参照してください。
本パッケージの利用方法の詳細については、『Compat』マニュアルのUsageを参照してください。マニュアルがインストールされていない場合は、オンライン版Compatマニュアルもご覧いただけます。