Spec-Zone.ru › Elisp

Сообщения протоколирования в *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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API