Previous: , Up: The Kill Ring   [Contents][Index]


31.8.6 killリングの内部

変数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-ringkill-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)を行うことにより発生し得ます。

Variable: kill-ring

この変数はもっとも最近にkillされたテキストが先頭になるように、killされたテキストのシーケンスのリストを保持する。

Variable: kill-ring-yank-pointer

この変数の値は、yankにたいして使用されるkillリングの先頭にある要素を示す。より正確には値はkill-ringの値のtail値であり、そのCARC-yによりyankされるはずのkill文字列。

User Option: kill-ring-max

この変数の値は、リング終端の要素を破棄する前にkillリングが成長し得る最大長。kill-ring-maxのデフォルト値は60。