提前结束加载 Emacs 的 Init file

在 Init file 中插入下面这么一句,会让 Emacs 以为 Init file 到此就结束了,之后的代码便不会再执行了。

(with-current-buffer " *load*"
  (goto-char (point-max)))

因此,除了注释外,我们有了另一种避免代码执行的方法。这或许在排查 Init file 的 bug 时能派上用场。

Buffer 名的问题

Emacs 使用 load 函数来加载(执行)Init file,默认会创建一个名为 " *load*" 的临时 Buffer,当嵌套 load 时,内部的临时 Buffer 会用一个别的名字。道理与 with-temp-buffer 类似:

(with-temp-buffer
  (list (buffer-name)
        (with-temp-buffer (buffer-name))))
     => (" *temp*" " *temp*-410731")

Emacs Lisp 手册中并没说明 load 是如何工作的,或者提供获得这个 Buffer 名的方法。我也不想深究了,差不多了就见好就收吧。