Каждое предупреждение — это текстовое сообщение, которое объясняет проблему пользователю, с соответствующим уровнем серьезности, который является символом. Ниже приведены поддерживаемые уровни серьезности в порядке убывания серьезности и их значения:
:emergencyПроблема, которая вскоре серьезно нарушит работу Emacs, если пользователь не займется ею незамедлительно.
:errorСообщение о данных или обстоятельствах, которые по своей сути неправильны.
:warningСообщение о данных или обстоятельствах, которые не являются по своей сути неправильными, но вызывают подозрение в возможной проблеме.
:debugСообщение о информации, которая может быть полезна, если пользователь в настоящее время отлаживает программу Lisp, выдающую предупреждение.
Когда ваша программа сталкивается с недопустимыми входными данными, она может
либо сообщить об ошибке Lisp, вызвав вызов error или
signal (см. Как сообщить об ошибке),
либо сообщить предупреждение с уровнем серьезности :error.
Сообщение об ошибке Lisp — самый простой способ, но это означает, что
сообщающая программа не может продолжить выполнение. Если вы хотите
потрудиться и реализовать способ продолжения обработки, несмотря на
недопустимые данные, то сообщение предупреждения с уровнем серьезности
:error — правильный способ информирования пользователя о
проблеме. Например, компилятор байт Emacs может сообщить об ошибке таким
образом и продолжить компиляцию других функций. (Если программа сообщает
об ошибке Lisp, а затем обрабатывает ее с помощью condition-case,
пользователь не увидит сообщение об ошибке; сообщение об этом как о
предупреждении вместо этого избегает этой проблемы.)
В дополнение к уровню серьезности, каждое предупреждение имеет тип
предупреждения для его классификации. Тип предупреждения может быть либо
символом, либо списком символов. Если это символ, то это пользовательская
группа, которую вы используете для пользовательских опций программы; если
это список, то первый элемент списка должен быть этой пользовательской
группой. Например, предупреждения компилятора байт используют тип
предупреждения (bytecomp). Если тип предупреждения —
список, то элементы списка после первого, которые должны быть произвольными
символами, представляют собой подкатегории предупреждения: они будут
отображены пользователю для лучшего объяснения характера предупреждения.
Эта функция сообщает о предупреждении, используя строку message
в качестве текста предупреждения и type в качестве типа
предупреждения. level должен быть уровнем серьезности и
по умолчанию устанавливается в :warning, если он опущен,
или nil.
buffer-name, если он не равен nil, указывает имя
буфера для логирования сообщения предупреждения. По умолчанию это *Warnings*.
Эта функция сообщает о предупреждении, используя значение, возвращаемое
(format-message message args…)
в качестве текста сообщения в буфере *Warnings*. В остальном она
эквивалентна display-warning.
Эта функция сообщает о предупреждении, используя значение, возвращаемое
(format-message message args…)
в качестве текста сообщения, emacs в качестве типа
предупреждения и :warning в качестве уровня серьезности. Она
существует только для совместимости; мы не рекомендуем ее использовать,
поскольку вы должны указывать конкретный тип предупреждения.