Spec-Zone.ru › Elisp

Препятствие взаимодействию

Иногда полезно запускать 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

Spec-Zone.ru

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