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 を参照してください。