insert-buffer ¶ の新しいボディGNU Emacs 22版の本体は、オリジナルよりも分かりにくい。
2つの式から成り、
(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
関数は何らかの値を返すためではなく、別のバッファを挿入するという副作用をもたらすためだけに存在します。