insert-buffer
的新主体GNU Emacs 22 版本中的主体比原始版本更令人困惑。
它包含两个表达式,
(push-mark (save-excursion (insert-buffer-substring (get-buffer buffer)) (point))) nil
除外,这是使初学者困惑的地方,push-mark
表达式内部执行了非常重要的工作。
get-buffer
函数返回一个以提供的名称命名的缓冲区。请注意,该函数并不被称为 get-buffer-create
;如果不存在缓冲区,则不会创建一个。由 get-buffer
返回的缓冲区(已存在的缓冲区)被传递给 insert-buffer-substring
,该函数插入整个缓冲区(因为您没有指定其他内容)。
push-mark
记录插入缓冲区的位置。然后,该函数返回 nil
,即其最后一条命令的值。换句话说,insert-buffer
函数仅用于产生副作用,即插入另一个缓冲区,而不是返回任何值。