Next: ミニバッファー、その他の事項, Previous: 再帰的なミニバッファー, Up: ミニバッファー [Contents][Index]
ネットワーク越しに与えたコマンドに応答するヘッドレスサーバープロセスとして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してクライアントに報告します。