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