本節では、イベントを処理せずに『まえもって覗き見』する方法、
処理待ちの入力の有無の検査方法、処理待ちの入力の破棄方法について述べます。
関数read-passwd
も参照してください(see Reading a Password)。
この変数は、コマンド入力として読まれることを 待っているイベントのリストを保持する。 イベントはリストに現れる順に使われ、使われると1つ1つ取り除かれる。
関数でイベントを読んだあとにそれを使わない場面があるため、 この変数が必要になる。 この変数にイベントを保存すると、 コマンドループやコマンド入力を読む関数によって通常どおり処理される。
たとえば、数値前置引数を実現する関数は、任意個数の数字文字を読み取る。 数字文字でないイベントをみつけたら、そのイベントを読み戻して、 コマンドループが通常どおりに読めるようにする必要がある。 同様に、インクリメンタルサーチでは、この機能を使って 探索においては意味を持たないイベントを読み戻す。 なぜなら、そのようなイベントは探索を終了させ、 通常どおり実行される必要があるからである。
unread-command-events
に入れられるように キー列からイベントを確実に簡単に取り出す方法はlistify-key-sequence
を使うことである(see Strings of Events)。もっとも最近に読み戻したイベントが最初に再度読まれるように、 普通はこのリストの先頭にイベントを追加する。
この関数は、文字列やベクトルであるkeyを個々のイベントのリストに変換する。 この結果は
unread-command-events
に入れられる。
この変数は、コマンド入力として読まれる文字を保持する。 値「-1」は、『空』を意味する。
この変数はほとんど廃れており、 かわりに
unread-command-events
を使うべきである。 Emacs 18版以前向けに書かれたプログラムを扱うためだけに存在する。
この関数は、現在、コマンド入力があるかどうかを調べる。 ただちに返るが、入力があれば値
t
を、 さもなければnil
を返す。 入力がないのにt
を返すことが稀にある。
この変数は、コマンドの一部として、あるいは、Lispプログラムが明示的に 読み取った最後の端末入力イベントを記録する。
以下の例で、Lispプログラムは文字1(ASCIIコード49)を読む。 それが
last-input-event
の値になるが、 (この式を評価するコマンドはC-x C-eと仮定するので)last-command-event
の値はC-eのままである。(progn (print (read-char)) (print last-command-event) last-input-event) -| 49 -| 5 ⇒ 49Emacs 18版との互換性のために、別名
last-input-char
が存在する。