Объявление функций устаревшими
Вы можете пометить именованную функцию как устаревшую, то есть она может быть удалена в будущем. В результате Emacs будет предупреждать об устаревшей функции при компиляции байт-кода, содержащего эту функцию, а также при отображении документации для этой функции. Во всех остальных отношениях устаревшая функция ведёт себя как любая другая функция.
Самый простой способ пометить функцию как устаревшую — поместить форму (declare (obsolete …)) в определение функции defun. См. Форма declare. Кроме того, можно использовать описанную ниже функцию make-obsolete.
Макрос (см. Макросы) также можно пометить как устаревший с помощью make-obsolete; это имеет те же последствия, что и для функции. Псевдоним функции или макроса также можно пометить как устаревший; в этом случае устаревшим становится сам псевдоним, а не функция или макрос, на который он ссылается.
- Функция: make-obsolete obsolete-name current-name when
-
Эта функция помечает obsolete-name как устаревшее. obsolete-name должен быть символом, обозначающим функцию или макрос, либо псевдонимом функции или макроса.
Если current-name — символ, в предупреждении предлагается использовать current-name вместо obsolete-name. current-name не обязательно должен быть псевдонимом obsolete-name; это может быть другая функция с похожими возможностями. current-name также может быть строкой, которая служит текстом предупреждения. Сообщение должно начинаться со строчной буквы и заканчиваться точкой. Оно также может быть
nil; в этом случае предупреждение не содержит дополнительных сведений.Аргумент when должен быть строкой, указывающей, когда функция впервые была объявлена устаревшей, например датой или номером выпуска.
- Макрос: define-obsolete-function-alias obsolete-name current-name when &optional doc
-
Этот вспомогательный макрос помечает функцию obsolete-name как устаревшую и также определяет её как псевдоним функции current-name. Он эквивалентен следующему:
(defalias obsolete-name current-name doc) (make-obsolete obsolete-name current-name when)
Кроме того, можно пометить как устаревший определённый способ вызова функции:
- Функция: set-advertised-calling-convention function signature when
-
Эта функция задаёт список аргументов signature как правильный способ вызова function. В результате компилятор байт-кода Emacs будет выдавать предупреждение всякий раз, когда встретит программу на Emacs Lisp, которая вызывает function другим способом (однако он по-прежнему позволит скомпилировать код в байт-код). when должна быть строкой, указывающей, когда переменная впервые была объявлена устаревшей (обычно это строка с номером версии).
Например, в старых версиях Emacs функция
sit-forпринимала три аргумента, как показано здесь:(sit-for seconds milliseconds nodisp)
В течение переходного периода функция принимала эти три аргумента, но объявляла такой старый способ вызова устаревшим, как показано здесь:
(set-advertised-calling-convention 'sit-for '(seconds &optional nodisp) "22.1")
Вместо этой функции можно использовать спецификацию
declareadvertised-calling-convention; см. Формаdeclare.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Obsolete-Functions.html