![Emacs 初始匿名缓冲区](https://linux22.com/image/1548617/Emacs%20%E5%88%9D%E5%A7%8B%E5%8C%BF%E5%90%8D%E7%BC%93%E5%86%B2%E5%8C%BA.png)
我曾经在我的 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-mode
并initial-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
,这可能会在创建新帧时导致问题。