Сообщения протоколирования в *Messages*
Практически все сообщения, отображаемые в области эха, также записываются в буфер *Messages*, чтобы пользователь мог обратиться к ним позже. Это включает все сообщения, которые выводятся с помощью message. По умолчанию, этот буфер является только для чтения и использует основной режим messages-buffer-mode. Ничто не мешает пользователю уничтожить буфер *Messages*, но следующее отображение сообщения его воссоздаст. Любой код Lisp, которому нужно напрямую получить доступ к буферу *Messages* и убедиться, что он существует, должен использовать функцию messages-buffer.
- Функция: messages-buffer
Эта функция возвращает буфер *Messages*. Если он не существует, она создает его и переключает его на
messages-buffer-mode.
- Пользовательский параметр: message-log-max
-
Эта переменная определяет, сколько строк сохранять в буфере *Messages*. Значение
tозначает, что нет ограничений на количество сохраняемых строк. Значениеnilполностью отключает протоколирование сообщений. Вот как отобразить сообщение и предотвратить его протоколирование:(let (message-log-max) (message …))
Для повышения удобства использования *Messages* механизм протоколирования объединяет последовательные идентичные сообщения. Также объединяются последовательные связанные сообщения для двух случаев: вопрос, за которым следует ответ, и серия сообщений о прогрессе.
Вопрос, за которым следует ответ, имеет два сообщения, похожих на те, что генерирует y-or-n-p: первое — ‘вопрос’, а второе — ‘вопрос...ответ’. Первое сообщение не содержит дополнительной информации, кроме той, что содержится во втором, поэтому протоколирование второго сообщения отбрасывает первое из журнала.
Серия сообщений о прогрессе имеет последовательные сообщения, похожие на те, что генерирует make-progress-reporter. Они имеют вид ‘основание...насколько-далеко’, где основание каждое время одинаково, а насколько-далеко меняется. Протоколирование каждого сообщения в серии отбрасывает предыдущее, при условии, что они идут подряд.
Функции make-progress-reporter и y-or-n-p не должны выполнять никаких специальных действий для активации функции объединения сообщений в журнале. Она срабатывает всякий раз, когда два последовательных сообщения, записанных в журнал, имеют общий префикс, заканчивающийся ‘...’.
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/Logging-Messages.html