Next: , Previous: , Up: バッファー   [Contents][Index]


28.9 バッファーの作成

このセクションではバッファーを作成する2つのプリミティブについて説明します。get-buffer-createは指定された名前の既存バッファーが見つからなければ作成します。generate-new-bufferは常に新たにバッファーを作成してそれに一意な名前を与えます。

どちらの関数もオプション引数inhibit-buffer-hooksを受け取ります。これが非nilなら、これらの関数が作成したバッファーはkill-buffer-hookkill-buffer-query-functions (バッファーのkillを参照)、buffer-list-update-hook (バッファーリストを参照)のフックを実行しません。これはユーザーに提示されたり他のアプリケーションに渡されることが決してない、内部バッファーや一時バッファーの速度低下を避けるためです。

バッファーを作成するために使用できる他の関数にはwith-output-to-temp-buffer (一時的な表示を参照)、およびcreate-file-buffer (ファイルのvisitを参照)が含まれます。サブプロセスの開始によってもバッファーを作成することができます(プロセスを参照)。

Function: get-buffer-create buffer-or-name &optional inhibit-buffer-hooks

この関数はbuffer-or-nameという名前のバッファーをリターンする。リターンされたバッファーはカレントにならない — この関数はカレントがどのバッファーであるかを変更しない。

buffer-or-nameは文字列、または既存バッファーのいずれかでなければならない。これが文字列で、かつ既存の生きたバッファーの名前なら、get-buffer-createはそのバッファーをリターンする。そのようなバッファーが存在しなければ、新たにバッファーを作成する。buffer-or-nameが文字列ではなくバッファーなら、たとえそのバッファーが生きていなくても与えられたバッファーをリターンする。

(get-buffer-create "foo")
     ⇒ #<buffer foo>

新たに作成されたバッファーにたいするメジャーモードはFundamentalモードにセットされる(変数major-modeのデフォルト値はより高いレベルで処理される。Emacsがメジャーモードを選択する方法を参照)。名前がスペースで始まる場合には、そのバッファーのアンドゥ情報の記録は初期状態では無効である(アンドゥを参照)。

Function: generate-new-buffer name &optional inhibit-buffer-hooks

この関数は新たに空のバッファーを作成してリターンするが、それをカレントにはしない。バッファーの名前は関数generate-new-buffer-namenameを渡すことにより生成される(バッファーの名前を参照)。つまりnameという名前のバッファーが存在しなければ、それが新たなバッファーの名前になり、その名前が使用されていたら‘<n>’という形式のサフィックスがnameに追加される。ここでnは整数。

nameが文字列でなければエラーがシグナルされる。

(generate-new-buffer "bar")
     ⇒ #<buffer bar>
(generate-new-buffer "bar")
     ⇒ #<buffer bar<2>>
(generate-new-buffer "bar")
     ⇒ #<buffer bar<3>>

新たなバッファーにたいするメジャーモードはFundamentalモードにセットされる。変数major-modeのデフォルト値は、より高いレベルで処理される。Emacsがメジャーモードを選択する方法を参照のこと。