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
で明示的に呼び出さなければなりません。これらを拡張定義(Extended
Definitions)と呼んでいます。それとは対照的に新たに追加された定義(Added
Definitions)は通常通り呼び出すことができます。
このマクロはargsとともに互換性関数funを呼び出す。このマクロなしで直接呼び出せる多くの関数がCompatにより提供されている。しかし既存関数の互換版をCompatが提供している場合には、compat-call
を通じて関数を呼び出す必要がある。
このマクロはfunにたいする互換性関数シンボルをリターンする。互換性を直接呼び出すより簡便なマクロについてはcompat-call
を参照のこと。
このパッケージを使用する方法についてのさらなる詳細についてはUsage in "Compat" Manualを参照のこと。インストール済みマニュアルがない場合にはOnline Compat manualも役に立つだろう。