Next: , Previous: , Up: ミニバッファー   [Contents][Index]


21.14 対話の抑止

ネットワーク越しに与えたコマンドに応答するヘッドレスサーバープロセスとしてEmacsを実行できると便利な場合があります。とはいえEmacsは主として対話的に使用するためのプラットフォームなので、特定の例外的な状況ではユーザーに入力を求めるコマンドが沢山あります。ユーザー入力の待機によりサーバーは単にハングしてしまうでしょうから、この使用方法はより困難になります。

inhibit-interactionnil以外の何らかにバインドすることによって、Emacsに入力を求めさせるのではなく、そのような状況をサーバーが処理するために使用可能なinhibited-interactionエラーをシグナルさせることができます。

以下は典型的な使用例です:

(let ((inhibit-interaction t))
  (respond-to-client
   (condition-case err
       (my-client-handling-function)
     (inhibited-interaction err))))

(y-or-n-pread-from-minibuffer等を通じて)ユーザーに入力を求める何かをmy-client-handling-functionが呼び出すことになると、かわりにinhibited-interactionエラーをシグナルします。それからサーバーコードはそのエラーをcatchしてクライアントに報告します。