Препятствие взаимодействию
Иногда полезно запускать Emacs как безголовый процесс сервера, который отвечает на команды, отправленные по сетевому подключению. Однако Emacs в первую очередь предназначен для интерактивного использования, поэтому многие команды запрашивают обратную связь от пользователя в определенных аномальных ситуациях. Это затрудняет этот случай использования, поскольку процесс сервера просто зависнет в ожидании ввода пользователя.
Привязка переменной inhibit-interaction к чему-то не-nil заставляет Emacs сигнализировать об ошибке inhibited-interaction, вместо того, чтобы запрашивать ввод, что может быть использовано процессом сервера для обработки этих ситуаций.
Вот типичный пример использования:
(let ((inhibit-interaction t))
(respond-to-client
(condition-case err
(my-client-handling-function)
(inhibited-interaction err))))
Если my-client-handling-function в конечном итоге вызовет что-то, что попросит пользователя о чем-то (через y-or-n-p или read-from-minibuffer или подобное), вместо этого будет сигнализирована ошибка inhibited-interaction. Затем код сервера перехватывает эту ошибку и сообщает об этом клиенту.
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/Inhibiting-Interaction.html