10.2 变量 kill-ring-yank-pointer

kill-ring-yank-pointer 是一个变量,就像 kill-ring 一样是一个变量。它通过绑定到它所指向的值来指向某个东西,就像任何其他 Lisp 变量一样。

因此,如果 kill 环的值为:

("一些文本" "另一段文本" "更多文本")

kill-ring-yank-pointer 指向第二个元素,那么 kill-ring-yank-pointer 的值就是:

("另一段文本" "更多文本")

如前一章节所解释的(see 如何实现列表),计算机并不保留被 kill-ringkill-ring-yank-pointer 指向的文本的两个不同副本。"另一段文本"和"更多文本"这两个词不会被复制。相反,这两个 Lisp 变量指向相同的文本片段。以下是一个图示:

kill-ring     kill-ring-yank-pointer
    |               |
    |      ___ ___  |     ___ ___      ___ ___
     ---> |   |   |  --> |   |   |    |   |   |
          |___|___|----> |___|___|--> |___|___|--> nil
            |              |            |
            |              |            |
            |              |             --> "更多文本"
            |              |
            |               --> "另一段文本"
            |
             --> "一些文本"



变量 kill-ring 和变量 kill-ring-yank-pointer 都是指针。但是 kill 环本身通常被描述成它实际由什么组成。kill-ring 通常被视为保存最近从 Emacs 缓冲区中剪切的信息的完整数据结构。另一方面,kill-ring-yank-pointer 用于指示——即指向——kill 环的哪一部分将被插入。