44.6 Поддержка старых версий Emacs

Пакеты, которые хотят поддерживать более старые выпуски 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. Мы называем их Расширенные определения. В отличие от них, новые Добавленные определения могут вызываться как обычно.

Макрос: compat-call fun &rest args

Этот макрос вызывает функцию совместимости fun с args. Многие функции, предоставляемые Compat, могут вызываться напрямую без этого макроса. Однако в случае, когда Compat предоставляет альтернативную версию существующей функции, вызов функции должен проходить через compat-call.

Макрос: compat-function fun

Этот макрос возвращает символ функции совместимости для fun. См. compat-call для более удобного макроса для прямого вызова функций совместимости.

Для получения более подробной информации о том, как использовать пакет, см. Usage в руководстве "Compat". Если у вас не установлен этот мануал, вы также можете прочитать онлайн-руководство Compat.