Next: , Previous: , Up: Command Loop   [Contents][Index]


20.10 Waiting for Elapsed Time or Input

待機関数(wait function)は特定の時間が経過するか、入力があるまで待機するようにデザインされています。たとえば、計算の途中でユーザーがディスプレイを閲覧できるように一時停止したいときがあるかもしれません。sit-forは一時停止して画面を更新、sleep-forは画面を更新せずに一時停止して、入力が到着したら即座にリターンします。

Function: sit-for seconds &optional nodisp

この関数は、(ユーザーからの保留中入力がない場合は)再描画を行ってから、seconds秒、または入力が利用可能になるまで待機する。sit-forの通常の目的は、ディスプレイしたテキストをユーザーが読み取る時間を与えるためである。入力が何も到着せず(Event Input Miscを参照)、時間をフルに待機した場合はt、それ以外はnilが値となる。

引数secondsは整数である必要はない。浮動小数点数の場合、sit-forは秒の少数点数を待機する。整数の秒だけをサポートするいくつかのシステムでは、secondsは切り捨てられる。

保留中の入力が存在しない場合、式(sit-for 0)は遅延なしに再描画をリクエストする(redisplay)と等価である。Forcing Redisplayを参照のこと。

nodispが非nilの場合sit-forは再描画を行わないが、それでも入力が利用可能になると(またはタイムアウト時間が経過すると)即座にリターンする。

バッチモード(Batch Modeを参照)では、たとえ標準入力ディスクリプタからの入力でも割り込みできまい。これは以下で説明するsleep-forでも同じである。

(sit-for seconds millisec nodisp)のように、3つの引数でsit-forを呼び出すことも可能だが時代遅れだと考えられている。

Function: sleep-for seconds &optional millisec

この関数は表示を更新せず、単にseconds秒間一時停止する。これは利用可能な入力に注意を払わない。この関数はnilをリターンする。

引数secondsは整数である必要はない。浮動小数点数の場合、sleep-forは秒の少数点数を待機する。整数の秒だけをサポートするいくつかのシステムでは、secondsは切り捨てられる。

オプション引数millisecはミリ秒単位で追加の待機期間を指定する。これはsecondsで指定された期間に追加される。システムが小数点の秒数をサポートしない場合、非0のmillisecを指定するとエラーとなる。

遅延を保証したい場合はsleep-forを使用する。

現在時刻を取得する関数については、Time of Dayを参照してください。