Отображение сообщений в области эха
В этом разделе описываются стандартные функции для отображения сообщений в области эха.
- Функция: message строка-формат &rest аргументы
-
Эта функция отображает сообщение в области эха. строка-формат — это строка форматирования, а аргументы — объекты для её спецификаций форматирования, как в функции
format-message, (см. Форматирование строк). Результирующая отформатированная строка отображается в области эха; если она содержит свойства текстаface, она отображается с указанными стилями (см. Стили). Строка также добавляется в буфер *Messages*, но без свойств текста (см. Ведение журналов сообщений).Обычно обратные апострофы и апострофы в формате преобразуются в соответствующие фигурные кавычки, например, "Отсутствует `%s'" может привести к "Отсутствует ‘foo’". См. Стиль цитирования текста для управления или запрещения этого преобразования.
В пакетном режиме сообщение печатается в стандартный поток ошибок, за которым следует символ новой строки.
Когда
inhibit-messageнеnil, сообщение не отобразится в области эха, оно будет только записано в ‘*Messages*’.Если строка-формат равна
nilили пустой строке,messageочищает область эха; если область эха была автоматически расширена, это возвращает её к нормальному размеру. Если активен минибуфер, это сразу же возвращает содержимое минибуфера на экран.(message "Reverting `%s'..." (buffer-name)) -| Reverting ‘subr.el’... ⇒ "Reverting ‘subr.el’..."
---------- Echo Area ---------- Reverting ‘subr.el’... ---------- Echo Area ----------
Чтобы автоматически отобразить сообщение в области эха или в всплывающем буфере, в зависимости от его размера, используйте
display-message-or-buffer(см. ниже).Предупреждение: Если вы хотите использовать собственную строку в качестве сообщения дословно, не просто пишите
(message string). Если строка содержит ‘%’, ‘`’ или ‘'’, она может быть переформатирована с нежелательными результатами. Вместо этого используйте(message "%s" string).
- Переменная: set-message-function
-
Если эта переменная не
nil, она должна быть функцией с одним аргументом — текстом сообщения для отображения в области эха. Эта функция будет вызываться функциямиmessageи другими подобными. Если функция возвращаетnil, сообщение отображается в области эха как обычно. Если функция возвращает строку, эта строка отображается в области эха вместо оригинального сообщения. Если функция возвращает другие значения, отличные отnil, это означает, что сообщение уже было обработано, поэтомуmessageничего не отобразит в области эха. См. такжеclear-message-function, который можно использовать для очистки сообщения, отображенного этой функцией.Значение по умолчанию — функция, отображающая сообщение в конце минибуфера, когда минибуфер активен. Однако, если отображаемый в активном минибуфере текст имеет свойство текста
minibuffer-message(см. Специальные свойства) для какого-либо символа, сообщение будет отображено перед первым символом, имеющим это свойство.
- Переменная: clear-message-function
-
Если эта переменная не
nil, функцииmessageи родственные им вызывают её без аргументов, когда их аргумент сообщение являетсяnilили пустой строкой.Обычно эта функция вызывается, когда поступает следующий ввод после отображения сообщения в области эха. От функции ожидается очистка сообщения, отображенного её соответствующей функцией, указанной
set-message-function.Значение по умолчанию — функция, очищающая сообщение, отображенное в активном минибуфере.
- Переменная: inhibit-message
Когда эта переменная не
nil, функцииmessageи подобные им не будут использовать область эха для отображения сообщений.
- Макрос: with-temp-message сообщение &rest тело
Этот конструкт временно отображает сообщение в области эха во время выполнения тело. Он отображает сообщение, выполняет тело, затем возвращает значение последней формы тела, восстанавливая предыдущее содержимое области эха.
- Функция: message-or-box строка-формат &rest аргументы
-
Эта функция отображает сообщение, как
message, но может отобразить его в диалоговом окне вместо области эха. Если эта функция вызывается в команде, которая была вызвана с помощью мыши — точнее, еслиlast-nonmenu-event(см. Информация о цикле команд) равна либоnil, либо списку — то она использует диалоговое окно или всплывающее меню для отображения сообщения. В противном случае используется область эха. (Это тот же критерий, что иy-or-n-pиспользует для принятия аналогичного решения; см. Диалоги «Да/Нет»).Можно принудительно использовать мышь или область эха, привязав
last-nonmenu-eventк соответствующему значению около вызова.
- Функция: message-box строка-формат &rest аргументы
-
Эта функция отображает сообщение, как
message, но всегда использует диалоговое окно (или всплывающее меню), когда это возможно. Если невозможно использовать диалоговое окно или всплывающее меню, потому что терминал их не поддерживает, тоmessage-boxиспользует область эха, какmessage.
- Функция: display-message-or-buffer сообщение &optional имя-буфера действие фрейм
-
Эта функция отображает сообщение сообщение, которое может быть либо строкой, либо буфером. Если оно короче максимальной высоты области эха, как определено
max-mini-window-height, оно отображается в области эха, используяmessage. В противном случаеdisplay-bufferиспользуется для отображения его во всплывающем буфере.Возвращает либо строку, отображенную в области эха, либо, когда используется всплывающий буфер, окно, используемое для его отображения.
Если сообщение является строкой, то необязательный аргумент имя-буфера — это имя буфера, используемого для его отображения при использовании всплывающего буфера, по умолчанию *Message*. В случае, когда сообщение является строкой и отображается в области эха, не указано, будет ли содержимое всё равно вставлено в буфер.
Необязательные аргументы действие и фрейм такие же, как у
display-buffer, и используются только если отображается буфер.
- Функция: current-message
Эта функция возвращает сообщение, в настоящее время отображаемое в области эха, или
nil, если его нет.
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/Displaying-Messages.html