我在Emacs中有一个异步进程,它创建一个标记文件。
此进程创建一个名为*ctags*的进程缓冲区。如果进程结果为“finished \n”,我将终止缓冲区。
如果进程结果是其他任何结果,我希望在运行时显示类似于*编译*状态输出的进程缓冲区。
M—X编译
.
也就是说,我要垂直拆分屏幕,并在底部显示*ctags*缓冲区。紧迫的
Q
最好是
杀死
底部缓冲区,只显示我的原始缓冲区。
我尝试在我的进程sentinel回调中使用这个:
(split-window-vertically)
(set-window-buffer (selected-window) (get-buffer "*ctags*"))
但是,除了将*ctags*缓冲区放在顶部之外,缓冲区没有与*compilation*输出相同的特性,例如,按
Q
插入Q.
如何创建类似*编译*的缓冲区?
编辑:
受Trey Jackson下面答案的启发,这正是我想要的:
(pop-to-buffer (get-buffer "*ctags*"))
(compilation-mode)
它选择*ctags*缓冲区,将其放入编译模式,并
Q
将退出窗口。
编辑2:
使用
(compilation-mode)
(主要模式而不是次要模式)因为Emacs不喜欢将次要模式重新应用到现有的缓冲区。
我得到的错误消息是:
Toggling compilation-minor-mode off; better pass explicit argument.