append-to-buffer
交互式表达式由于 append-to-buffer
函数将被交互使用,该函数必须具有一个 interactive
表达式。 (有关 interactive
的详细信息,请参阅 使函数具有交互性。)
表达式如下:
(interactive (list (read-buffer "追加到缓冲区: " (other-buffer (current-buffer) t)) (region-beginning) (region-end)))
该表达式不是一个字母代表部分的表达式,如前所述。相反,它以这些部分开始一个列表:
列表的第一部分是一个表达式,用于读取缓冲区的名称并将其作为字符串返回。那就是 read-buffer
。该函数需要一个提示作为其第一个参数,即 ‘"追加到缓冲区: "’。其第二个参数告诉命令如果不指定任何值,应提供什么值。
在这种情况下,第二个参数是一个包含函数 other-buffer
、一个异常和 ‘t’ 的表达式,表示为真。
other-buffer
的第一个参数是异常,是另一个函数 current-buffer
。这不会被返回。第二个参数是真的符号,即 t
。这告诉 other-buffer
它可以显示可见缓冲区(在这种情况下,它将不显示当前缓冲区,这是有道理的)。
表达式如下:
(other-buffer (current-buffer) t)
list
表达式的第二个和第三个参数是 (region-beginning)
和 (region-end)
。这两个函数指定要追加的文本的开头和结尾。
最初,该命令使用字母 ‘B’ 和 ‘r’。整个 interactive
表达式如下:
(interactive "B追加到缓冲区: \nr")
但是当这样做时,切换到的缓冲区的默认值变为不可见。这是不想要的。
(提示与第二个参数之间用换行符 ‘\n’ 分隔。它后面跟着一个 ‘r’,告诉 Emacs 将跟随函数参数列表中 buffer
符号后面的两个参数(即 start
和 end
)绑定到点和标记的值。这个参数运行良好。)