Next: Indirect Buffers, Previous: Creating Buffers, Up: Buffers [Contents][Index]
バッファーのkillにより、 そのバッファーの名前はEmacsにとって未知の名前となり、そのバッファーが占めていたメモリースペースは、他の用途に使用できるようになります。
バッファーに対応するバッファーオブジェクトは、それを参照するものがあればkillされても存在し続けますが、それをカレントにしたり表示することができないよう、特別にマークされます。とはいえ、killされたバッファーの同一性は保たれるので、2つの識別可能なバッファーをkillした場合、たとえ両方死んだバッファーであっても、eq
による同一性は残ります。
あるウィンドウ内においてカレント、あるいは表示されているバッファーをkillした場合、Emacsはかわりに他の何らかのバッファーを自動的に選択、または表示します。これは、バッファーのkillにより、カレントバッファーが変更されることを意味します。したがって、バッファーをkillする際は、(killされるバッファーがカレントを偶然知っていた場合を除き)カレントバッファーの変更に関しても、事前に注意を払うべきです。Current Bufferを参照してください。
1つ以上のインダイレクト バッファー(Indirect Buffersを参照) のベースとなるバッファーをkillした場合は、インダイレクトバッファーも同様に自動的にkillされます。
バッファーのbuffer-name
がnil
の場合のみ、バッファーはkillされる。killされていないバッファーは生きた(live)バッファーと呼ばれる。あるバッファーにたいして、そのバッファーが生きているか、またはkillされているかを確認するには、buffer-live-p
を使用する(下記参照)。
この関数は、バッファーbuffer-or-nameをkillして、そのバッファーのメモリーを他の用途のために開放、またはオペレーティングシステムに返却する。buffer-or-nameがnil
、または省略された場合は、カレントバッファーをkillする。
そのバッファーをprocess-buffer
として所有するすべてのプロセスには、通常はプロセスを終了させるシグナルSIGHUP
(“hangup”)が送信される。Signals to Processesを参照のこと。
バッファーがファイルをvisitしていて、かつ保存されていない変更が含まれる場合、kill-buffer
はバッファーをkillする前に、ユーザーにたいして確認を求める。これは、kill-buffer
がinteractiveに呼び出されていなくても、行われる。この確認要求を抑制するには、kill-buffer
の呼び出し前に、変更フラグ(modified
flag)をクリアーすればよい。Buffer Modificationを参照のこと。
killされるバッファーをカレントで表示しているすべてのバッファーをクリーンアップするために、この関数はreplace-buffer-in-windows
を呼び出す。
すでに死んでいるバッファーをkillしても、効果はない。
この関数は、実際にバッファーをkillした場合は、t
をリターンする。ユーザーが確認で拒否を選択、またはbuffer-or-nameがすでに死んでいる場合は、nil
をリターンする。
(kill-buffer "foo.unchanged") ⇒ t (kill-buffer "foo.changed") ---------- Buffer: Minibuffer ---------- Buffer foo.changed modified; kill anyway? (yes or no) yes ---------- Buffer: Minibuffer ---------- ⇒ t
保存されていない変更について確認を求める前に、kill-buffer
はリストkill-buffer-query-functions
内の関数を、出現順に引数なしで呼び出す。
Before confirming unsaved changes, calls the functions in the list , in
order of appearance, with no arguments.
それらが呼び出される際には、killされるバッファーがカレントになる。この機能は、これらの関数がユーザーに確認を求めるというアイデアが元となっている。これらの関数のいずれかがnil
をリターンした場合、kill-buffer
はそのバッファーの命を奪わない。
これは、尋ねることになっている質問をすべて終えた後、実際にバッファーをkillする直前に、kill-buffer
により実行されるノーマルフックである。この変数は永続的にローカルであり、メジャーモードの変更により、そのローカルバインディングはクリアーされない。
特定のバッファーにおいてこの変数が非nil
の場合、save-buffers-kill-emacs
およびsave-some-buffers
(この関数の2つ目のオプション引数がt
の場合)は、ファイルをvisitしているバッファーと同じように、そのバッファーの保存を提案する。Definition of save-some-buffersを参照のこと。何らかの理由により変数buffer-offer-save
をセットする際は、自動的にバッファーローカルになる。Buffer-Local Variablesを参照のこと。
特定のバッファーにおいてこの変数が非nil
の場合、save-buffers-kill-emacs
およびsave-some-buffers
は、(バッファーが変更されていれば)ユーザーに確認を求めることなく、そのバッファーを保存する。何らかの理由によりこの変数をセットする際は、自動的にバッファーローカルになる。
この関数は、objectが生きたバッファー(killされていないバッファー)ならt
、それ以外はnil
をリターンする。