下列函数与变量提供对剪切环的底层访问能力,同时仍适用于 Lisp 程序, 因为它们会自动处理与窗口系统选区的交互(see 窗口系统选择)。
函数 current-kill 将标记剪切环首部的粘贴指针移动 n 个位置
(从新剪切内容向旧内容移动),并返回环中对应位置的文本。
若可选的第二个参数 do-not-move 非空,则 current-kill
不会修改粘贴指针,仅返回从当前粘贴指针开始计数的第 n 个剪切内容。
若 n 为 0,表示请求最新剪切内容,current-kill 在查询剪切环前
会先调用 interprogram-paste-function 的值(见下文说明)。
若该值为函数且调用后返回字符串或字符串列表,则 current-kill
会将这些字符串压入剪切环并返回第一个字符串。同时它会将粘贴指针指向
interprogram-paste-function 返回的第一个字符串对应的剪切环条目,
无论 do-not-move 的值为何。否则,current-kill 不会对 n=0 做特殊处理,
仅返回粘贴指针指向的条目,且不移动粘贴指针。
该函数将文本 string 压入剪切环,并使粘贴指针指向它。必要时会丢弃最旧的条目。
它同时会调用 interprogram-paste-function(受用户选项
save-interprogram-paste-before-kill 控制)与
interprogram-cut-function 的值(见下文)。
若 replace 非空,则 kill-new 会用 string 替换剪切环的第一个元素,
而非将其压入剪切环。
该函数将文本 string 追加到剪切环的第一个条目,并使粘贴指针指向合并后的条目。
通常 string 会添加在条目末尾,但若 before-p 非空,则添加在开头。
该函数以子过程形式调用 kill-new,因此会间接触发
interprogram-cut-function 以及可能的 interprogram-paste-function(见下文)。
该变量用于在使用窗口系统时从其他程序获取剪切文本。其值应为 nil
或无参数函数。
若值为函数,则 current-kill 会调用它以获取最新剪切内容。
若该函数返回非空值,则将其作为最新剪切内容;若返回 nil,
则使用剪切环首部内容。
为支持多选区的窗口系统,该函数也可返回字符串列表。此时第一个字符串
作为最新剪切内容,其余字符串均压入剪切环,方便 yank-pop 访问。
该函数的常规用途是将窗口系统剪贴板内容作为最新剪切内容,即使该选区
来自其他应用程序。See 窗口系统选择。但若剪贴板内容
来自当前 Emacs 会话,则该函数应返回 nil。