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-buffer-name

Эта переменная содержит имя буфера, в который следует записывать сообщения; по умолчанию это *Messages*. Некоторым пакетам может быть полезно временно перенаправлять вывод в другой буфер (например, чтобы позднее записать его в файл журнала); для этого они могут связать эту переменную с другим именем буфера. (Обратите внимание, что этот буфер (если он ещё не существует) будет создан и переведён в режим messages-buffer-mode.)

Чтобы сделать буфер *Messages* удобнее для пользователя, механизм записи в журнал объединяет подряд идущие одинаковые сообщения. Он также объединяет последовательные связанные сообщения в двух случаях: вопрос, за которым следует ответ, и серия сообщений о ходе выполнения.

Вопрос и следующий за ним ответ представлены двумя сообщениями, подобными тем, которые создаёт y-or-n-p: первое — «вопрос», а второе — «вопрос...ответ». Первое сообщение не содержит дополнительной информации по сравнению со вторым, поэтому запись второго сообщения удаляет первое из журнала.

Серия сообщений о ходе выполнения состоит из последовательных сообщений, подобных тем, которые создаёт make-progress-reporter. Они имеют вид «основа...прогресс», где основа каждый раз остаётся неизменной, а прогресс меняется. При записи каждого сообщения из серии предыдущее удаляется, если сообщения идут подряд.

Функциям make-progress-reporter и y-or-n-p не нужно выполнять никаких специальных действий для включения функции объединения сообщений в журнале. Она срабатывает всякий раз, когда записываются два последовательных сообщения с общим префиксом, заканчивающимся на «...».

Copyright © 1990-1996, 1998-2026 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