Next: Pure Storage, Previous: Library Headers, Up: GNU Emacs Internals
本節では、Emacsの実行形式を構築する手順を説明します。 メイクファイルが自動的にこれらすべてを行うので、 Emacsを構築してインストールするために本節のことがらを 読者が知っている必要はありません。 本節の内容は、Emacsの保守者向けです。
ディレクトリsrcのCソースファイル群をコンパイルすると、 temacsと呼ばれる実行形式ファイルが作られます。 これは裸のインピュアEmacs(bare impure Emacs)とも呼びます。 これには、Emacs Lispインタープリタと入出力ルーティンが含まれますが、 編集コマンドは入っていません。
コマンド‘temacs -l loadup’で、 実用的なEmacsの実行形式を作るためにtemacsを使います。 これらの引数は、temacsに対して ファイルloadup.elで指定したLispファイル群を評価するように指示します。 これらのファイルはEmacsの通常の編集環境を作り上げ、 その結果、Emacsは裸ではありませんがまだインピュアです。
標準のLispファイル群をロードするにはかなり時間が必要です。 しかし、読者がEmacsを実行するたびにこれを行う必要はありません。 temacsは、必要なファイルをあらかじめロードしたemacsという 実行形式プログラムとしてダンプできます。 emacsはファイル群をロードする必要がないので素早く起動します。 これが通常インストールされるEmacsの実行形式です。
emacsを作るにはコマンド‘temacs -batch -l loadup dump’を使います。 ここでの‘-batch’の目的は、 temacsが端末に関するデータを初期化しないようにするためです。 これにより、ダンプしたEmacsでは端末情報の表が空であることを保証できます。 引数‘dump’は、emacsという名前の新たな実行形式を ダンプするようにloadup.elに指示します。
ダンプできないオペレーティングシステムもあります。 そのようなシステムでは、Emacsを使うたびに コマンド‘temacs -l loadup’でEmacsを起動する必要があります。 これにはかなり時間がかかりますが、多くても1日に1回、あるいは、 ログアウトしなのであれば週に1回Emacsを起動する必要があるだけでしょうから、 余分な時間は重大問題にはならないでしょう。
あらかじめロードしておく追加のファイルは、
それらをロードするsite-load.elという名前のライブラリを
書くことで指定できます。
追加データのための領域を確保するために
src/puresize.hのPURESIZE
の値を増やす必要があるかもしれません。
(十分な大きさになるまで20000ずつ増やして試すこと。)
しかし、マシンが速くなればなるほど、あらかじめロードしておくファイルを
追加することの利点は減少します。
最近のマシンでは、このようにする必要はないでしょう。
loadup.elがsite-load.elを読み終えると、
Snarf-documentation
(see Accessing Documentation)を呼び出して、
基本関数やあらかじめロードした関数(および変数)の説明文字列を
それらの説明文字列を格納したファイルetc/DOCから探します。
ダンプする直前に実行すべきList式を指定するには、 site-init.elという名前のライブラリにそれらのLisp式を入れておきます。 このファイルは、説明文字列を探し終えてから実行されます。
関数定義や変数定義をあらかじめロードしたいときには、 それを行ってあとでEmacsを実行したときにそれらの説明文字列を 参照できるようにする方法が3つあります。
byte-compile-dynamic-docstrings
の値にnil
以外を指定し、
site-load.elかsite-init.elでそれらのファイルをロードする。
(これには、それらの説明文字列がつねにEmacsの領域を占めてしまう
欠点がある。)
無変更の普通のEmacsにユーザーが期待する機能を変更するようなものを site-load.elやsite-init.elに入れることは勧められません。 読者のサイトでは普通の機能に優先させるべきであると思うときには、 default.elでそれを行います。 そうすれば、ユーザーは好みに応じて読者が行った変更を無効にできます。 See Start-up Summary。