Emacs Lispのファイルを実行するにはM-x load-fileを使います.この コマンドはミニバッファを使ってファイル名を読み込み,ファイルの内容をLisp コードとして実行します.はじめにファイルをバッファに読み込む必要はありま せん.どんな場合でもこのコマンドはディスクにあるファイルを読み込みます. Emacsのバッファにあるテキストは用いません.
LispコードのファイルがEmacs Lispのライブラリのディレクトリに置かれてい
るならば,M-x load-libraryを使ってロードすることができます.プログ
ラムからはload-library
関数でロードできます.またはこれと似ていま
すが,より基本的で付加的な引数のあるload
関数も使えます.
M-x load-libraryはM-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
を呼び出したときは,ロードが完了しなくても何も取り消されません.