switch-to-buffer 为什么对 *Help* buffer 表现不同?

emacs 中, 我发现 *Help* 这个 buffer 很特别, 具体来说, 我发现 switch-to-buffer 到一个普通的 buffer (比如打开了一个文件), 那么并不会创建 window , 当前 window 会切换到另一个 buffer. 但是如果是 switch-to-buffer 到 *Help*, 就会在当前 window 下面新打开一个 window, 显示 *Help* buffer 的内容. 为什么 *Help* buffer 表现不同呢? 我以为 special buffer 都是这样, 但是试了 (switch-to-buffer "*scratch*")(switch-to-buffer "*Messages*"), 发现它们的表现和普通 buffer 没有区别. 我又以为是 help-window-select 的原因, 但我发现 help-window-select 仅仅是控制调用了 describe-* 命令后 *Help* buffer 会不会获得 focus 的区别.

所以, 为什么 (switch-to-buffer "*Help*") 这么特别呢?

弹出方式和他的实现有关,具体可以看他的源代码。
不过如果只是想控制弹出方式可以用 shackle ,之前论坛有个哥们的教程提到过

我在Manjaro上用Emacs 28.2测试了,并没有发现你说的针对*Help*的特殊行为。我用emacs -Q测试的。

1 个赞

因为 spacemacs 自己做了配置

希望楼主能分清在 emacs 中和在 spacemacs 中的区别,如果不能在 emacs -Q 中复现,最好在标题中加上 spacemacs

2 个赞

确实确实, 我本来应该用 emacs -Q 看看, 我又没做到[打脸]

试用了一下,相当好用!