Spec-Zone.ru › Elisp

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

Вы можете отметить именованную функцию как устаревшую, что означает, что её возможно удалят в будущем. Это заставит Emacs предупреждать о том, что функция устарела, всякий раз, когда он выполняет байт-компиляцию кода, содержащего эту функцию, и всякий раз, когда он отображает документацию для этой функции. Во всех других отношениях устаревшая функция ведет себя как любая другая функция.

Самый простой способ отметить функцию как устаревшую — поместить (declare (obsolete …)) форму в определение функции defun. См. Форму объявления. В качестве альтернативы вы можете использовать функцию make-obsolete, описанную ниже.

Макрос (см. Макросы) также может быть помечен как устаревший с помощью make-obsolete; это имеет тот же эффект, что и для функции. Псевдоним для функции или макроса также может быть помечен как устаревший; это делает сам псевдоним устаревшим, а не функцию или макрос, к которому он относится.

Функция: make-obsolete устаревшее-имя текущее-имя когда

Эта функция отмечает устаревшее-имя как устаревшее. устаревшее-имя должно быть символом, обозначающим функцию или макрос, или псевдонимом для функции или макроса.

Если текущее-имя является символом, сообщение об ошибке указывает на использование текущее-имя вместо устаревшее-имя. текущее-имя не обязательно должно быть псевдонимом для устаревшее-имя; это может быть другая функция с похожей функциональностью. текущее-имя также может быть строкой, которая служит сообщением об ошибке. Сообщение должно начинаться с маленькой буквы и заканчиваться точкой. Также может быть nil, в этом случае сообщение об ошибке не предоставляет дополнительных деталей.

Аргумент когда должен быть строкой, указывающей, когда функция была впервые сделана устаревшей — например, дата или номер выпуска.

Макрос: define-obsolete-function-alias устаревшее-имя текущее-имя когда &optional doc

Этот вспомогательный макрос отмечает функцию устаревшее-имя как устаревшую и также определяет её как псевдоним для функции текущее-имя. Он эквивалентен следующему:

(defalias obsolete-name current-name doc)
(make-obsolete obsolete-name current-name when)

Кроме того, вы можете отметить конкретную согласованность вызова для функции как устаревшую:

Функция: set-advertised-calling-convention функция подпись когда

Эта функция указывает список аргументов подпись как правильный способ вызова функция. Это заставляет байт-компилятор Emacs выдавать предупреждение всякий раз, когда он сталкивается с программой Emacs Lisp, которая вызывает функция любым другим способом (однако, он по-прежнему позволит скомпилировать код). когда должна быть строкой, указывающей, когда переменная была впервые сделана устаревшей (обычно это строка номера версии).

Например, в старых версиях Emacs функция sit-for принимала три аргумента, вот так

  (sit-for seconds milliseconds nodisp)

Однако, вызов sit-for таким образом считается устаревшим (см. Ожидание). Старая согласованность вызова устарела так:

(set-advertised-calling-convention
  'sit-for '(seconds &optional nodisp) "22.1")

Copyright © 1990-1996, 1998-2022 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