Emacs 初始匿名缓冲区

Emacs 初始匿名缓冲区

我曾经在我的 emacs.init.el文件中使用以下两行来禁止启动画面并切换到匿名缓冲区

(setq inhibit-splash-screen t) (switch-to-buffer "**")

最近我开始使用emacs --daemon和,emacsclient并将我的初始缓冲区设置为*scratch*。我不想要 Lisp 交互和烦人的划痕消息,所以我在我的init.el

(setq initial-buffer-choice "**")

问题在于新的初始缓冲区与传统**缓冲区不同。事实上,当关闭 emacs 时,系统会提示我保存一个名为 的文件**,而我并不想出现这种行为,我只想要我传统的**匿名缓冲区。

我知道我可以手动设置initial-major-modeinitial-scratch-message继续使用*scratch*,但我真的更愿意使用**它。

我怎么解决这个问题?

答案1

来自initial-buffer-choice文档:

如果值为 nil 且 'inhibit-startup-screen' 为 nil,则显示启动屏幕。如果值为字符串,则切换到访问字符串指定的文件或目录的缓冲区。如果值为函数,则调用它而不带参数并切换到它返回的缓冲区。如果为 t,则打开 '划痕' 缓冲。

您已将值设置为字符串,因此它会切换缓冲区访问字符串指定的文件

您可以将值设置为返回要选择的缓冲区的函数:

(setq initial-buffer-choice (lambda () (get-buffer-create "**")))

请注意,我使用了get-buffer-create,因为如果缓冲区不存在,则传递的函数将返回nil,这可能会在创建新帧时导致问题。

相关内容