Next: Indirect Buffers, Previous: Creating Buffers, Up: Buffers [Contents][Index]
バッファーのkill(Killing a buffer)により、 そのバッファーの名前は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
内の関数を出現順に引数なしで呼び出す。それらが呼び出される際には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
をリターンする。