次: Library Search, 前: Loading, 上: Loading
Emacs Lispには、ロードのためのインターフェイスがいくつかあります。
たとえば、autoload
は、
ファイルで定義された関数向けに場所を確保するオブジェクトを作成します。
自動ロードする関数を呼び出すと、
ファイルの実際の定義を得るためにファイルをロードします(see Autoload)。
require
は、ファイルをすでにロードしていなければロードします
(see Named Features)。
これらの機構はすべて、最終的には、関数load
を呼び出して動作します。
この関数は、Lispコードのファイルを探してオープンし、 その中のフォームすべてを評価してから、ファイルをクローズする。
ファイルを探すために、
load
はまずfilename.elcという名前のファイル、 つまり、filenameに`.elc'を付加した名前のファイルを探す。 そのようなファイルが存在すれば、それをロードする。 そのような名前のファイルがなければ、load
はfilename.elという名前のファイルを探す。 そのファイルが存在すれば、それをロードする。 いずれの名前のファイルもみつからなければ、 最終的に、load
は、なにも付加しないfilenameという名前のファイルを 探し、存在すればそれをロードする。 (関数load
がfilenameを探す手順は賢くない。(load "foo.el")
を評価すると、 foo.el.elという名前のファイルを探してしまう。)省略可能な引数nosuffixが
nil
以外であれば、 `.elc'と`.el'の接尾辞を試さない。 この場合、目的のファイルの正確な名前を指定する必要がある。 正確なファイル名を指定し、かつ、nosuffixにt
を使えば、 foo.el.elのようなファイル名を探してしまうことを防げる。省略可能な引数must-suffixが
nil
以外であれば、load
は、ディレクトリ名を明示していない限り、 ファイル名は`.el'か`.elc'で終るものと仮定する。 filenameにディレクトリ名が明示してなく、かつ、 接尾辞も指定してなければ、load
は接尾辞を必ず付加する。filenameがfooやbaz/foo.barのように 相対ファイル名であると、
load
は変数load-path
を使って ファイルを探す。 filenameにload-path
に指定した各ディレクトリを付加し、 最初にみつかったファイルをロードする。 デフォルトディレクトリを表すnil
がload-path
に 指定されている場合に限り、カレントディレクトリを試す。load
は、まず最初のディレクトリで3つの可能な接尾辞を試し、 続いて2番目のディレクトリで3つの可能な接尾辞を試し、 というように行う。 see Library Search。foo.elcがfoo.elより古いという旨の警告を受け取った場合には、 foo.elの再コンパイルを考えるべきである。 see Byte Compilation。
(コンパイルしていない)ソースファイルをロードするときには、 Emacsがファイルを訪問する場合と同様に、
load
は文字集合を変換する。 see Coding Systems。nomessageが
nil
であると、 ロード中にはエコー領域に `Loading foo...'や`Loading foo...done'のメッセージを表示する。ファイルをロード中に処理できないエラーに出会うと、ロードを終了する。
autoload
によるロードの場合には、 ロード中に行われた関数定義はすべてもとに戻す。
load
がロードすべきファイルをみつけられないと、 普通、(`Cannot open load file filename'を伴った) エラーfile-error
を通知する。 missing-okがnil
以外であれば、load
はnil
を返すだけである。変数
load-read-function
を使って、 式を読み取るためにread
のかわりにload
が使う関数を指定できる。 下記参照。ファイルを正しくロードできると
load
はt
を返す。
このコマンドはファイルfilenameをロードする。 filenameが相対ファイル名であると、 現在のデフォルトディレクトリを仮定する。
load-path
を使わず、接尾辞も付加しない。 ロードするファイル名を正確に指定したい場合にこのコマンドを使う。
この変数は、
load
やeval-region
が、read
のかわりに使う、式を読み取る関数を指定する。 その関数はread
と同様に引数を1つとること。通常、この変数の値は
nil
であり、 これらの関数がread
を使うことを意味する。注意: この変数を使うかわりに、
eval-region
の引数read-functionとして 関数を渡す新しい別の機能を使ったほうが見通しがよい。 see Eval。
Emacs構築時のload
の使い方についての情報は、
See Building Emacs。