Next: , Previous: Defining Commands, Up: Defining Commands


20.2.1 interactiveの使い方

本節では、Lisp関数を対話的に呼び出し可能なコマンドにするフォーム interactiveの書き方について述べます。

— Special Form: interactive arg-descriptor

このスペシャルフォームは、これを含む関数がコマンドであり、 (M-xや当該関数にバインドしたキー列を入力することで) 対話的に呼び出せることを宣言する。 引数arg-descriptorは、コマンドを対話的に呼び出したときに コマンドに対する引数の計算方法を宣言する。

他の関数と同様に、コマンドはLispプログラムからも呼び出せるが、 その場合、呼び出し側が引数を渡し、arg-descriptorにはなんの効果もない。

フォームinteractiveが効果を発揮するのは、 コマンドループ(実際にはサブルーティンcall-interactively)が 関数を呼び出すまえに関数定義を走査してこのフォームを探すからである。 関数が呼び出されると、フォームinteractiveを含めて その本体のフォームが実行されるが、そのとき、 interactiveは引数を評価せずに単にnilを返す。

引数arg-descriptorには3つの可能性があります。