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


20.16 Keyboard Macros

キーボードマクロ(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

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