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


20.16 キーボードマクロ

キーボードマクロ(keyboard macro)はコマンドとして考えることが可能な入力イベントの記録されたシーケンスであり、キー定義によって作成されます。キーボードマクロのLisp表現はイベントを含む文字列かベクターです。キーボードマクロとLispマクロ(Macrosを参照)を混同しないでください。

Function: execute-kbd-macro kbdmacro &optional count loopfunc

この関数はイベントシーケンスとしてkbdmacroを実行する。kbdmacroが文字列かベクターなら、たとえそれがユーザーによる入力であっても、その中のイベントは忠実に実行される。シーケンスは単一のキーシーケンスであることを要求されない。キーボードマクロ定義は、通常は複数のキーシーケンスを結合して構成される。

kbdmacroがシンボルなら、そのシンボルの関数定義はkbdmacroの箇所に使用される。それが別のシンボルならこのプロセスを繰り返す。最終的に結果は文字列かベクターになる。結果がシンボル、文字列、ベクターでなければエラーがシグナルされる。

引数countは繰り返すカウントであり、kbdmacroがその回数実行される。countが省略またはnilなら1回実行される。0ならkbdmacroはエラーに遭遇するか検索が失敗するまで何度も実行される。

loopfuncが非nilなら、それはマクロの繰り返しごとに呼び出される引数なしの関数である。loopfuncnilをリターンするとマクロの実行が停止する。

execute-kbd-macroの使用例はReading One Eventを参照のこと。

Variable: executing-kbd-macro

この変数はカレントで実行中のキーボードマクロを定義する文字列かベクター。nilならカレントで実行中のマクロは存在しない。マクロの実行により実行されたときに異なる振る舞いをするように、コマンドはこの変数をテストできる。この変数を自分でセットしてはならない。

Variable: defining-kbd-macro

この変数はキーボードマクロの定義中のときだけ非nilである。マクロ定義中の間は異なる振る舞いをするように、コマンドはこの変数をテストできる。既存のマクロ定義に追加する間、値はappendになる。コマンドstart-kbd-macrokmacro-start-macroend-kbd-macroはこの変数をセットする。この変数を自分でセットしてはならない。

この変数は常にカレント端末にたいしてローカルであり、バッファーローカルにできない。Multiple Terminalsを参照のこと。

Variable: last-kbd-macro

この変数はもっとも最近定義されたキーボードマクロの定義である。値は文字列、ベクター、またはnil

この変数は常にカレント端末にたいしてローカルであり、バッファーローカルにできない。Multiple Terminalsを参照のこと。

Variable: kbd-macro-termination-hook

これはキーボードマクロが終了したときに実行されるノーマルフックであり、何がキーボードマクロを終了させたか(マクロの最後に到達したのか、あるいはエラーにより最後到達する前に終了したのか)は問わない。