[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
コマンド は対話的に、すなわち入力イベントに結びつけられた結果とし て呼ばれる、Lisp 関数です。
コマンドは関数 (defun
を使う)と同じ方法で定義されますがコマンドの
本体の形式は必ず interactive 宣言 を含まなければなりません。こうす
ると関数は対話的に呼ぶことができ、call-command
関数にどのようにコ
マンドに与えられた引数の値を計算すればいいか教えることができます。
interactive 宣言は特別形式 interactive
を呼出すように見えますが、
実際のところこの特別形式は常に nil
を返し、副次的な効果はありませ
ん。唯一のこの特別形式の効果は call-command
関数にその関数が対話
的に呼ばれることを示すだけです。宣言形式の二番目の要素
(interactive
シンボルの後)はコマンドに与えられる引数の値がどのよ
うに計算されるかを定義します。
interactive 宣言の構造は次のようになっています:
(interactive [calling-spec]) |
コマンドが定義されるときに interactive 宣言を含むようにするには次のよう にします:
(defun some-command (arg1) "Optional documentation string." (interactive ...) ... |
calling-spec 形式はコマンドが対話的に呼ばれるときに与えられる引数 の値を定義し、それは次の内の一つです:
nil
か定義されません(すなわち (interactive)
)。コマンドには
引数は与えられず、このタイプの inetractive 宣言は単に関数が対話的に呼ば
れるということを示すだけです。
今のところ利用できる修辞句は、
t
です。
nil
です。
current-event-window
関数を呼んだときの結果です。
current-event-window
関数を呼んだ結果で現在フォーカスされているウィ
ンドウか、nil
か root
です。
空白行は nil
の値の引数を生成します。
コマンドが実行されるさいに call-command
関数が使われます。これは
(interactive 宣言を使って)コマンドに適用する引数値のリストをつくり、それ
からコマンドを呼出します。
t
を返します。もし
object が関数(すなわちシンボルか lambda 表現)なら interactive 宣言
を含むコマンドです。
コマンドである唯一の他のオブジェクトは関数呼出し形式です。これらのタイプ のコマンドの使用はおすすめできませんが、ときどき役立ちます。
commandp
の記述を参照して下さい。
もし prefix-argument が nil でなければこのコマンドに対する
current-prefix-arg
変数の値を定義し、通常その変数の値はグローバル
な prefix-arg
からとられます。