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


22.10 時間の経過や入力の待機

待機関数(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モード(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を参照してください。