Запись сообщений в *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