我在Emacs中有一个异步进程,它创建了一个TAGS文件.
此过程创建一个名为*ctags*的进程缓冲区.如果处理结果是"完成\n",我会杀死缓冲区.
如果进程结果是其他任何我想在运行Mx编译时显示类似于*compilation*status输出的进程缓冲区.
即我想垂直分割屏幕并在底部显示*ctags*缓冲区.按q最好杀死底部缓冲区并显示我的原始缓冲区.
我尝试在我的进程中使用这个Sentinel回调:
(split-window-vertically) (set-window-buffer (selected-window) (get-buffer "*ctags*"))
但除了将*ctags*缓冲区置于顶部之外,缓冲区与*compilation*输出不具有相同的特性,例如按q插入q.
如何创建像*compilation*这样的缓冲区?
编辑:
受到Trey Jackson在下面的回答的启发,这正是我想要的:
(pop-to-buffer (get-buffer "*ctags*")) (compilation-mode)
它选择*ctags*缓冲区,将其置于编译模式,q将退出窗口.
EDIT2: 使用
(compilation-mode)(主要模式而不是次要模式)因为Emacs不知道不喜欢将次要模式重新应用到现有缓冲区.
我得到的错误消息是:
Toggling compilation-minor-mode off; better pass explicit argument.
要获取*compilation*缓冲区的行为,请将其添加到脚本中:
(compilation-mode)
Run Code Online (Sandbox Code Playgroud)