Пакеты, которые хотят поддерживать более старые выпуски Emacs, не отказываясь при этом от более новых функций последних выпусков Emacs, могут использовать пакет Compat на GNU ELPA. Зависимость от этого пакета позволяет Emacs предоставлять определения совместимости для отсутствующих функций.
Версионирование Compat следует за версионированием Emacs, поэтому рядом с самой старой версией, от которой зависит пакет (через пакет emacs), можно также указать, какая самая новая версия 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 для более удобного макроса для прямого вызова функций совместимости.
Для получения более подробной информации о том, как использовать пакет, см. Usage в руководстве "Compat". Если у вас не установлен этот мануал, вы также можете прочитать онлайн-руководство Compat.