GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/Loading-Files.html ・ emacs-doc.conao3.com

16.9 ファイルの読み込み

GNU Emacsコミュニティの多くの人々が、Emacs向けの拡張機能を開発してきました。時が経つにつれ、こうした拡張機能は新たなリリースに組み込まれることが多くなっています。例えば、CalendarやDiaryパッケージ、そしてCalcは、現在では標準のGNU Emacsの一部となっています。

load コマンドを使用してファイル全体を評価し、それによってファイル内のすべての関数や変数を Emacs にインストールできます。例えば:

(load "~/emacs/slowsplit")

これは、ホームディレクトリの emacs サブディレクトリにある slowsplit.el ファイル、あるいは(もし存在すれば)より高速なバイトコンパイル済みの slowsplit.elc ファイルを評価、つまり読み込みます。このファイルには、ジョン・ロビンソンが1989年に作成した関数 split-window-quietly が含まれています。

split-window-quietly 関数は、再表示を最小限に抑えてウィンドウを分割します。当時使用していた低速な1200ボーの端末でうまく動作したため、1989年にこれを導入しました。今ではこのような低速接続に遭遇することはたまにしかありませんが、バッファの下半分を新しいウィンドウの下部に、上半分を上部のウィンドウに残すというこの関数の挙動が気に入っているため、今でも使い続けています。

デフォルトの split-window-vertically のキーバインドを置き換えるには、次のように split-window-quietly にキーを割り当てる必要があります。

(keymap-global-set "C-x 2" 'split-window-quietly)

私のように多くの拡張機能を読み込んでいる場合は、上記のように拡張機能ファイルの正確な場所を指定する代わりに、そのディレクトリをEmacsのload-pathの一部として指定できます。すると、Emacsがファイルを読み込む際、デフォルトのディレクトリリストに加えて、そのディレクトリも検索対象となります。(デフォルトのリストは、Emacsのビルド時にepaths.hで指定されます。)

次のコマンドで、~/emacs ディレクトリを既存のロードパスに追加できます。

;;; Emacs Load Path
(setq load-path (cons "~/emacs" load-path))

ちなみに、load-libraryはload関数へのインタラクティブなインターフェースです。関数全体は以下のようになります。

(defun load-library (library)
  "Load the Emacs Lisp library named LIBRARY.
This is an interface to the function `load'.  LIBRARY is searched
for in `load-path', both with and without `load-suffixes' (as
well as `load-file-rep-suffixes').

See Info node `(emacs)Lisp Libraries' for more details.
See `load-file' for a different interface to `load'."
  (interactive
   (list (completing-read "Load library: "
                          (apply-partially 'locate-file-completion-table
                                           load-path
                                           (get-load-suffixes)))))
  (load library))

関数名 load-library は、「file」の慣用的な同義語として「library」が用いられていることに由来します。load-library コマンドのソースコードは files.el ライブラリにあります。

少し異なる役割を果たすもう一つのインタラクティブコマンドに load-file があります。load-library とこのコマンドの違いについては、The GNU Emacs Manual の Libraries of Lisp Code for Emacs を参照してください。