GNU Emacs の用いる Lisp 言語は、他の(全ての) Lisp 言語同様、 (主に)関数と変数 の集まりで構成されています。本チャプターでは、(この Lisp 言語における) 関数の 定義と、関数の扱い方と、関数と(エディティング)コマンドとの関係について述べま す。
GNU Emacs Lisp の関数は、(基本的に)次の 2つの方法のいずれかで定義されます。つ まり、 C で primitive として書くか、Lisp で定義します。 C で書かれた関数は約 500 個定義されており、エディティング関数に対する(非常に)ローレベルなインタ フェースや、オペレーティングシステムに対するインタフェースを提供し、Lisp で書 かれたものより速い操作を提供しています。これらを修正するためには、(書きかえた 後)エディタをコンパイルしなおす必要があります。これはかなり複雑で、本チャプ ターの終りで述べます(訳注:??)。
エディタの拡張部分を書く(別の)方法の標準的なものに、 Lisp で新しい関数を書くと いうことがあります。他の Emacs のバージョンをプログラムしたことのある人であれ ば GNU Emacs に対するコードを書くのは楽なはずです。この Lisp は本物の Lisp を 提供しており、コマンドとして用いる関数を呼ぶのに、妙なテクニックを用いる必要は ありません。
いくつかの言葉が、(ここでは)普通とは異なる意味で用いられます。そのため、それら を最初に定義しておくのが良いでしょう。
primitive
primitive は、Lisp から呼び出すことのできる関数で、 car や cdr のよう に Cで書かれたものです。これらはしばしば built-in 関数や subr と呼ばれ ます。
関数
関数は、通常 Lisp コードから呼ばれるもののことです。本マニュアルでは、 (通常)関数は Lisp で書かれたコードを意味するのに用います。しかし、この 言葉はまた primitive、特殊フォーム、マクロを指すのにも用います。 (関数 はこのように用いられなくてはいけない?? dml 整合的な名前付けの方法が必 要!!)
コマンド
コマンドは、(ユーザーに知らされていて) ユーザーが M-x コマンド名 もし くはキーストロークで起動することのできるもののことです。プログラマの視 点から見ると、interactive specification (後の interactive の説明を参 照) を持つ関数のことです。
キーストロークコマンド
キーストロークコマンドは、(キーシーケンスにバインドされてないコマンド と対比し)短かいキーシーケンスで実行できるコマンドのことです。この区別 は Emacs 以外のエディタにおけるコマンドの意味と区別するために導入され たものです。プログラマにとってこの区別は重要ではありません。