Previous: Low-Level Kill Ring, Up: The Kill Ring [Contents][Index]
変数kill-ringは、文字列リスト形式でkillリングのコンテンツを保持します。もっとも最近のkillが常にこのリストの先頭になります。
変数kill-ring-yank-pointerは、CARが次のyankのテキストであるような、killリングリスト内のリンクをpointします。これをリングの先頭を識別すると言います。そして、kill-ring-yank-pointerを異なるリンクに移動することをkillリングの転回(rotating
the kill
ring)と呼びます。yankポインターを移動する関数はyankポインターをリスト終端から先頭、またはその逆へラップするのでkillリングを“ring”と呼びます。killリングの転回は仮想的なものであってkill-ringの値は変更しません。
kill-ringとkill-ring-yank-pointerはいずれも、通常は値がリストであるようなLisp変数です。kill-ring-yank-pointerの名前にある単語“pointer”は、その変数の目的が次回yankコマンドにより使用されるリストの最初の要素を指すことであることを示します。
kill-ring-yank-pointerの値は常にkillリングリスト内の1つのリンクとeqです。それが指す要素は、そのリンクのCARです。killリングを変更するkillコマンドも、この変数にkill-ringの値をセットします。その効果は新たにkillされた先頭になるように、リングを転回することです。
以下は変数kill-ring-yank-pointerが、killリング("some text" "a different
piece of text" "yet older text")内の2番目のエントリーを指すことを表すダイアグラムです。
kill-ring ---- kill-ring-yank-pointer
| |
| v
| --- --- --- --- --- ---
--> | | |------> | | |--> | | |--> nil
--- --- --- --- --- ---
| | |
| | |
| | -->"yet older text"
| |
| --> "a different piece of text"
|
--> "some text"
この状態はC-y (yank)の直後にM-y (yank-pop)を行うことにより発生し得ます。
この変数はもっとも最近にkillされたテキストが先頭になるように、killされたテキストのシーケンスのリストを保持する。
この変数の値は、yankにたいして使用されるkillリングの先頭にある要素を示す。より正確には値はkill-ringの値のtail値であり、そのCARがC-yによりyankされるはずのkill文字列。
この変数の値は、リング終端の要素を破棄する前にkillリングが成長し得る最大長。kill-ring-maxのデフォルト値は60。