GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Inhibiting-Interaction.html ・ emacs-doc.conao3.com

21.14 相互作用の阻害

ネットワーク接続経由で与えられるコマンドに応答するヘッドレスサーバープロセスとして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 エラーが通知されます。その後、サーバーコードがそのエラーを捕捉し、クライアントに報告します。