【问题标题】:How to create buffer similar to *compilation* in Emacs?如何在 Emacs 中创建类似于 *compilation* 的缓冲区?
【发布时间】:2010-11-18 02:24:33
【问题描述】:

我在 Emacs 中有一个异步进程,它创建一个 TAGS 文件。

此进程创建一个名为 *ctags* 的进程缓冲区。如果进程结果是“finished\n”,我会终止缓冲区。

如果进程结果是其他任何我想在运行 M-x compile 时显示类似于 *compilation* 状态输出的进程缓冲区。

即我想垂直分割屏幕并在底部显示 *ctags* 缓冲区。按 q 最好 kill 底部缓冲区并只显示我的原始缓冲区。

我尝试在我的进程哨兵回调中使用它:

(垂直分割窗口) (set-window-buffer (selected-window) (get-buffer "*ctags*"))

但是除了它把 *ctags* 缓冲区放在顶部之外,缓冲区不具有与 *compilation* 输出相同的特征,例如按 q 会插入 q。

如何创建像 *compilation* 这样的缓冲区?

编辑:

受以下 Trey Jackson 回答的启发,这正是我想要的:

(pop-to-buffer (get-buffer "*ctags*")) (编译模式)

它选择 *ctags* 缓冲区,使其进入编译模式,q 将退出窗口。

EDIT2: 使用

(compilation-mode)
(主要模式而不是次要模式)因为 Emacs 不喜欢将次要模式重新应用到现有缓冲区。

我得到的错误信息是:

关闭编译次要模式;更好地传递显式参数。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    要获得*compilation* 缓冲区的行为,请将其添加到您的脚本中:

    (compilation-mode)
    

    【讨论】:

    • 太棒了!正是我需要的。为了完整起见, (compilation-minor-mode) 也可以。
    【解决方案2】:

    最好从compile-mode导出自己的mode,定义error regex等

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多