Go to the first, previous, next, last section, table of contents.

ライブラリのロード

Emacs Lispのファイルを実行するにはM-x load-fileを使います.この コマンドはミニバッファを使ってファイル名を読み込み,ファイルの内容をLisp コードとして実行します.はじめにファイルをバッファに読み込む必要はありま せん.どんな場合でもこのコマンドはディスクにあるファイルを読み込みます. Emacsのバッファにあるテキストは用いません.

LispコードのファイルがEmacs Lispのライブラリのディレクトリに置かれてい るならば,M-x load-libraryを使ってロードすることができます.プログ ラムからはload-library関数でロードできます.またはこれと似ていま すが,より基本的で付加的な引数のあるload関数も使えます.

M-x load-libraryM-x load-fileとディレクトリを探す順番と, 各ディレクトリで3つのファイル名を探す点が違います.3つのファイル名とは, 1つは指定された名前に`.elc'をつけたもの,2つめは`.el'をつけた もの,そして,指定された名前そのものです.`.elc'ファイルはLispファ イルをバイトコードにコンパイルした結果です.可能なら,Lispファイルではな くこちらをロードします.コンパイルされたファイルのほうが,ロードも実行も 速いからです.

load-libraryに与えるファイル名はそれ自体では完全なファイル名で はないことが多いので,ファイル名の補完機能は働きません.実際,このコマン ドを使ったとき,どんなファイル名が使われたかは正確にはわからないことが多 いのです.

load-libraryで探索されるディレクトリの順番は,変数 load-pathで指定されます.これにはディレクトリ名を表す文字列のリス トがあります.このリストのデフォルト値にはEmacs自身のためのLispコードが あるディレクトリの名前が含まれています.個人用のライブラリがあるならそれ を1つのディレクトリにまとめて,そのディレクトリ名をload-pathに加 えてください.リスト内のnilはそのときのデフォルトディレクトリを表 します.しかし,nilをリストに加えるのはあまりよくないでしょう. nilをリストに入れておきたいという場合は,実際にはたいていM-x load-fileを使えばすみます.

ライブラリをロードするコマンドはあまり使いません.ライブラリで定義して いるコマンドにはオートロードの定義がされているからです.このようなコマン ドを実行するとloadが呼び出されてライブラリをロードします.そして オートロードの定義をライブラリの真の定義と置き換えます.

エラー,あるいはC-gで止めたために,ファイルのオートロードが完了 しなかったときは,そのファイルでなされたすべての関数定義が自動的に取り消 されます.provideという呼び出しはすべて槽です.その結果,オートロー ド定義されているコマンドを再び使うと,もう一度すべてのファイルがロードさ れます.このためいくつかのファイルがロードされていないのに,コマンドのオー トロード定義が変えられていて,まちがった動作をするようなことはありません. 関数定義が取り消されるのは,オートロードの場合だけです.陽にload を呼び出したときは,ロードが完了しなくても何も取り消されません.


Go to the first, previous, next, last section, table of contents.