insert-buffer 的函数体 ¶insert-buffer 的函数体主要分为两部分:or 表达式与 let 表达式。or 表达式的作用是确保参数 buffer 绑定到缓冲区对象本身,而非仅缓冲区名称。let 表达式的函数体包含将其他缓冲区内容复制到当前缓冲区的代码。
框架结构上,这两个表达式在 insert-buffer 中的位置如下:
(defun insert-buffer (buffer)
"documentation..."
(interactive "*bInsert buffer: ")
(or ...
...
(let (varlist)
body-of-let... )
要理解 or 表达式如何确保参数 buffer 绑定到缓冲区对象而非名称,首先需要了解 or 函数。
在此之前,我先用 if 重写这部分代码,让你以更熟悉的方式理解其逻辑。