Previous: Low-Level Kill Ring, Up: The Kill Ring
変数kill-ring
は、文字列のリストの形でキルリングの内容を保持します。
もっとも最近のキルがつねにリストの先頭にあります。
変数kill-ring-yank-pointer
は、
carがつぎにヤンクすべきテキストであるような
キルリングリストの項目を指しています。
この変数がリングの『先頭』を識別するといいます。
kill-ring-yank-pointer
を別の項目へ動かすことを
キルリングを回転すると呼びます。
ヤンクポインタを動かす関数は、
リストの末尾からリストの先頭へ折り返しその逆も行うので、
キルリングを『リング』と呼ぶのです。
リングの回転は仮想的なものであり、
kill-ring
の値は変更しません。
kill-ring
もkill-ring-yank-pointer
もLisp変数であり、
それらの値は普通のリストです。
kill-ring-yank-pointer
の名前の単語『ポインタ』は、
つぎのヤンクコマンドで使うリストの項目を識別することが
変数の目的であることを表します。
kill-ring-yank-pointer
の値は、キルリングリストの
1つの項目とつねにeq
です。
これが識別する項目は、その項目のcarです。
キルリングを変更するキルコマンドも、
kill-ring
の値をこの変数の値とします。
その効果は、新たにキルされたテキストが先頭にくるように
リングを回転することです。
キルリング("some text" "a different piece of text" "yet older text")
の
第2項目を変数kill-ring-yank-pointer
が指しているようすをつぎに示します。
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
)を使うと
この状態になります。