Объявление устаревших функций
Вы можете отметить именованную функцию как устаревшую, что означает, что её возможно удалят в будущем. Это заставит 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