Иногда вам может потребоваться избежать показа предупреждения во время выполнения команды и показать его только после завершения команды. Для этого вы можете использовать функцию delay-warning. Emacs автоматически откладывает все предупреждения, выданные на ранних этапах запуска, и показывает их только после обработки файлов инициализации.
Эта функция является отложенным аналогом display-warning (см. Основы предупреждений) и вызывается с теми же аргументами. Сообщение предупреждения помещается в список delayed-warnings-list.
Значение этой переменной — список предупреждений, которые должны быть показаны после завершения текущей команды. Каждый элемент должен быть списком
(тип сообщение [уровень [имя-буфера]])
с той же формой и теми же значениями, что и список аргументов display-warning. Сразу после выполнения post-command-hook (см. Обзор командного цикла) командный цикл Emacs показывает все предупреждения, заданные этой переменной, затем сбрасывает переменную в nil.
Программы, которым требуется дополнительная настройка механизма отложенных предупреждений, могут изменить переменную delayed-warnings-hook:
Это обычный хук, который выполняется командным циклом Emacs после post-command-hook для обработки и показа отложенных предупреждений. Emacs также выполняет этот хук во время запуска, после загрузки файлов site-start и пользовательских инициализаций (см. Сводка: последовательность действий при запуске), поскольку предупреждения, выданные до этого момента, автоматически откладываются.
Его значение по умолчанию — список из двух функций:
(collapse-delayed-warnings display-delayed-warnings)
Функция collapse-delayed-warnings удаляет повторяющиеся записи из delayed-warnings-list. Функция display-delayed-warnings вызывает display-warning для каждой записи в delayed-warnings-list по очереди, а затем устанавливает delayed-warnings-list в nil.