これまでに、定義されたキーシーケンスをタイプすることで、 Emacs 中のコマンドを 実行することは行なってきています。例へば、C-b はコマンド backward-char を実行 し、1文字ポイントを逆方法に移動します。 backward-char は 1つの関数です。この関 数を評価することで、コマンド backward-char を実行することができます。
M-ESC (backward-char 2) RET をタイプして、ポイントを 2文字分逆方向に動かして下 さい。
さて、これで私達は自分のコマンドを作るのに必要とされるもの(訳注:building block)を全て手に入れたことになります。後は、自分用の関数を作るだけです。非常に 単純な関数の定義を次に示します。
(defun backward-2 () (backward-char 2)) => backward-2
ミニバッファでこの関数を評価(M-ESC (backward-2) RET)すると (ミニバッファではな く) そのカレントなバッファ中のポイントが 2文字分逆方向に動き、値 nil が返さ れ、ミニバッファ中に print されます。
backward-2 はそれほど役に立つ関数ではありません。ですから、このエディティング セッションの後、消えてしまってもかまわないわけですが、 (通常は)後で使うことが できるよう、作った関数をファイルに入れてしまっておきたいということがあります。
作った関数を入れておくためファイルを新しく作りましょう。`.el' の extension を 持つ名前を選んで下さい(私は `myfuns.el' を選びました)。 Emacs は(ファイルが) `.el' で終っていることを知ると、自動的に Emacs-Lisp モードに入ります。
さあ、(別の)簡単な関数の定義を入れましょう。
(defun forward-word-2 () (forward-word 2))
コマンド LFD は (Lisp インタラクションモードでは特別な意味を持つため) ここでは (式を評価するのには)役立ちません。式を評価するには、ポイントを式中(その最後の 行の終りでもかまいません) に位置付け、C-M-x (eval-defun) をタイプします。
この関数定義のどこかにポイントを位置付け、 C-M-x をタイプして下さい。forward- word-2 がエコーエリアに表示されます。この後、ポイントをバッファの頭に位置付 け、M-ESC (forward-word-2) RET を用いて関数 forward-word-2 を実行すると、それ が機能していることを見ることができます。