Вы можете пометить именованную функцию как устаревшую, что означает, что она может быть удалена в будущем. Это заставляет Emacs выдавать предупреждение о том, что функция устарела, всякий раз, когда он байт-компилирует код, содержащий эту функцию, и всякий раз, когда он отображает документацию для этой функции. Во всех других отношениях устаревшая функция ведет себя как любая другая функция.
Самый простой способ пометить функцию как устаревшую — это поместить форму
(declare (obsolete …)) в определение функции с помощью
defun. См. Форма declare. Альтернативно, вы можете
использовать функцию make-obsolete, описанную ниже.
Макрос (см. Макросы) также может быть помечен как устаревший с помощью
make-obsolete; это имеет те же эффекты, что и для функции. Псевдоним для функции или
макроса также может быть помечен как устаревший; это делает сам псевдоним устаревшим, а не
функцию или макрос, на который он ссылается.
Эта функция помечает obsolete-name как устаревший. obsolete-name должен быть символом, называющим функцию или макрос, или псевдоним для функции или макроса.
Если current-name — это символ, предупреждение гласит, что следует использовать
current-name вместо obsolete-name. current-name
не обязательно должен быть псевдонимом для obsolete-name; это может быть
другая функция с аналогичной функциональностью. current-name также может
быть строкой, которая служит сообщением предупреждения. Сообщение должно начинаться с
строчной буквы и заканчиваться точкой. Оно также может быть nil, в
случае которого сообщение предупреждения не содержит дополнительной информации.
Аргумент when должен быть строкой, указывающей, когда функция была впервые объявлена устаревшей — например, дата или номер выпуска.
Этот удобный макрос помечает функцию obsolete-name как устаревшую и также определяет ее как псевдоним для функции current-name. Это эквивалентно следующему:
(defalias obsolete-name current-name doc) (make-obsolete obsolete-name current-name 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")
Альтернативой использованию этой функции является
advertised-calling-convention declare спецификация,
см. Форма declare.