我在Emacs中有一个异步进程,它创建了一个TAGS文件。
此过程创建一个名为* ctags *的进程缓冲区。如果处理结果是“完成\ n”,我会杀死缓冲区。
如果处理结果是其他任何内容,我想在运行 M-x compile 时显示类似于* compilation * status输出的进程缓冲区。
即。我想垂直分割屏幕并在底部显示* ctags *缓冲区。按 q 最好 kill 底部缓冲区并显示原始缓冲区。
我尝试在我的进程中使用了这个回调:
(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.
答案 0 :(得分:5)
要获取*compilation*
缓冲区的行为,请将其添加到脚本中:
(compilation-mode)
答案 1 :(得分:3)
最好从编译模式派生自己的模式,并定义错误正则表达式等。