特殊形式 interactive は、Lisp関数をコマンドに変換します。interactive
形式は関数本体のトップレベル(通常は本体の最初の形式)に配置される必要があります。これはラムダ式(ラムダ式を参照)と defun
形式(関数の定義を参照)の両方に適用されます。この形式は関数の実際の実行時には何も行いません。その存在はフラグとして機能し、Emacsのコマンドループに対して、その関数が対話的に呼び出せることを知らせます。interactive 形式の引数は、対話的な呼び出しにおける引数の読み込み方法を指定します。
あるいは、関数シンボルの interactive-form プロパティに interactive 形式を指定することもできます。このプロパティに nil 以外の値を指定した場合、関数本体内のいかなる interactive 形式よりも優先されます。この機能が使われることは稀です。
関数によっては、Lispから直接呼び出すのではなく、インタラクティブに呼び出すことのみを想定している場合があります。その場合は、直接、あるいはdeclareを介して、その関数に非nil interactive-onlyプロパティを指定してください(declare形式を参照)。これにより、コマンドがLispから呼び出された場合に、バイトコンパイラが警告を出すようになります。describe-functionの出力にも同様の情報が含まれます。プロパティの値には、バイトコンパイラが警告に直接使用する文字列(末尾がピリオドであり、先頭が大文字でないこと。例:"use (system-name) instead.")、t、またはLispコードで使用する代替関数となるその他のシンボルを指定できます。
ジェネリック関数(ジェネリック関数を参照)は、interactive形式を追加してもコマンドに変換することはできません。