ネットワーク越しに与えたコマンドに応答するヘッドレスサーバープロセスとして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))))
(y-or-n-p
やread-from-minibuffer
等を通じて)ユーザーに入力を求める何かをmy-client-handling-function
が呼び出すことになると、かわりにinhibited-interaction
エラーをシグナルします。それからサーバーコードはそのエラーをcatchしてクライアントに報告します。