(Emacs では) ユーザーがテキストを動かす(訳注:move)のを助けたり不幸な事故が生 じにくくするため、ユーザーが(最後に)削除したテキスト部分のいくつかを、リストと して保持します。このテキストはキルリングとして知られるリスト中に保持されます。 このリストを実際のリングとして扱い操作する関数がいくつか存在します。
kill されたテキストは、このリストにストリングとして保持されます。このリストに (さらに)テキストを追加する関数は、 (buffer-substring を用い) 対象となるテキス トのストリングを作ってから、このリストの長さを調べます。これが kill-ring-max より長い場合、新しいエントリーが追加する時に (その)最後のエントリーをリストか ら削除します。
キルリングから(異なる)エントリーを yank するため、エントリー間を動きまわれるよ うキルリング内へのポインタが提供されています。このポインタはグローバル変数 kill-ring-yank-pointer です。キルリングからストリングを yank する関数は、この ポイントから行ないます(訳注:yank します)。
明示的にキルリングを回す関数がいくつか存在します。それらは kill-ring-yank-pointer を動かすことで、これを行ないます。これらの関数はキルリ ングをリングとして扱います。 kill-ring-yank-pointer を回すコマンドはそれが kill-ring の一方の端を越えると、もう一方の端に(訳注:kill-ring-yank-pointer を) もっていきます。
kill コマンドは、常に(その)テキストを kill-ring の前に置き、 kill-ring-yank-pointer を kill-ring にリセットします。
kill-region は、(プログラムで kill テキストを用いる際)一番用いられる関数です。 この関数を呼ぶコマンドは(全て) "kill コマンド" で、その名前には "kill" を含ま なくてはいけません。 kill コマンドを 2回以上続けて実行すると、 2 回目(もしくは 3 回目等)の kill コマンドで kill されたテキストは、(キルリング中のエントリーに なるよう) 最初の kill コマンドで kill されたテキストにアペンドされなくてはいけ
ません。 kill-region は last-command を kill-region に設定することでこうなるこ とを保証しています。
kill-region start end Comamnd
この関数は、 start と end で定義されるリージョン内のテキストを削除します。 このテキストは削除されますが、キルリングにセーブされます。
インタラクティブに呼ばれた場合、 start と end はポイントとマークになりま す。
kill-line &optional count Comamnd
この関数は、ポイントに続く行の残りを(ニューラインを含まずに) kill します。 ポイントがニューラインの直前にある場合、ニューラインを kill します。
count が与えれた場合、これは (ニューラインを含め) ポイントの前のその行数分 kill します。 (kill-line 2) と呼ぶのは、(kill-line) を 2 回呼ぶのとは異な ることになります(訳注:??)。 count が負の場合、kill は行を逆方向に kill し ます。
インタラクティブに呼ばれた場合、 count は未処理のプレフィックスアーギュメ ントになります。 (non-nil でない場合、処理されることになります)。
yank &optional arg Comamnd
この関数は、kill-ring-yank-pointer にあるテキストをポイントの直前に挿入し ます。
arg がリストの場合、上記のように yank しますが、 yank されたテキストの前に ポイントを位置付け(テキストの終りにマークを位置付け)ます。 arg が数字の場 合、kill されたテキストの arg 番目に新しいものを挿入します。
インタラクティブに呼ばれた場合、 count (訳注:arg では?) は未処理のプレ フィックスアーギュメントになります。
yank-pop arg Comamnd
この関数は、 yank されたばかりのテキストを kill された(別の)テキスト部分で 置き換えます。このコマンドは yank か yank-pop の直後でしか許されません。こ のような場合、リージョンはその前の yank で挿入されたばかりのテキストを持ち ます。 yank-pop はそのテキストを削除し、その場所に kill されたテキストの別 のもの(訳注:stretch)を挿入します。
arg が nil の場合、リージョン中のテキストを削除し (kill は行ないません これはすでにキルリング上にあります) キルリングの前の要素が挿入されます。 var (訳注:arg では?)が数値の場合、 arg 番目に前の kill を挿入します。 arg が負の場合、これは(より)最近の kill になります。
kill のシーケンスは前に戻るようになっている(訳注:wrap around)ため、最も古 いものの後に(最も)新しいものがきます。
copy-regin-as-kill start end Comamnd
この関数は、 start と end で定義されたリージョンをキルリング上にセーブしま す。そのテキストをバッファから削除することはしません。
インタラクティブに呼ばれると start と end はポイントとマークになります。
User Option: kill-ring-max
このグローバル変数の値は、 (要素が捨てられ始める前に) キルリングの長くなり うる最大の長さです。
Variable: kill-ring
SourceFile simple.el kill されたテキストのシーケンス。
Variable: kill-ring-yank-pointer
このグローバル変数の値は、キルリングの最後のもの(訳注:tail)で car が最後 に yank されたものを指すものです。 yank-pop と rotate-yank-pointer コマン
ドは、このポインタをキルリング中で動かします。 kill を行なうと、これはキル リングの頭に(再)設定されます。
Command: rotate-yank-pointer count
この関数は、キルリング中で kill-ring-yank-pointer を count だけ動かします (訳注:rotate)。