Spec-Zone.ru › Elisp

Отображение сообщений в области эха

В этом разделе описываются стандартные функции для отображения сообщений в области эха.

Функция: 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

Spec-Zone.ru

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