Spec-Zone.ru › Elisp

Объявление функций устаревшими

Вы можете пометить именованную функцию как устаревшую, то есть она может быть удалена в будущем. В результате 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")

Вместо этой функции можно использовать спецификацию declare advertised-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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API