変数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
のデフォルト値は120。