5.2.2 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 重写这部分代码,让你以更熟悉的方式理解其逻辑。