2009-08-09 50 views
3

我在Emacs中有一個異步進程,它創建一個TAGS文件。如何在Emacs中創建類似* compilation *的緩衝區?

該進程創建名爲* ctags *的進程緩衝區。如果處理結果爲「已完成\ n」,則殺死緩衝區。

如果處理結果是其他內容,我想在運行時顯示類似於*編譯*狀態輸出的進程緩衝區M-x編譯

I.e.我想垂直分割屏幕並在底部顯示* ctags *緩衝區。按q最好是底部緩衝區,只顯示我原來的緩衝區。

我想在我的過程定點回調使用這樣的:

 
(split-window-vertically) 
(set-window-buffer (selected-window) (get-buffer "*ctags*")) 

但除了一個事實,即它把*的ctags *頂部緩衝,緩衝不具備相同的特性*編譯*輸出,例如按q插入q。

如何創建一個類似* compilation *的緩衝區?

編輯:

通過下面的三分球傑克遜的回答啓發,這不正是我想要的:

 
(pop-to-buffer (get-buffer "*ctags*")) 
(compilation-mode) 

它選擇* CTAGS *緩衝區,將其放入編譯模式和q將退出窗口。

EDIT2: 使用

(compilation-mode)
(主要模式,而不是次要模式),因爲Emacs的不知何故不喜歡重新申請未成年人模式的exisiting緩衝區。

錯誤消息我得到的是:

 
Toggling compilation-minor-mode off; better pass explicit argument. 

回答

5

要獲得*compilation*緩衝的行爲,添加到您的腳本:

(compilation-mode) 
+1

太棒了!正是我需要的。爲了完整起見,(編譯小模式)也起作用。 – cschol 2009-08-09 23:44:44

2

這是更好地從compilation-派生自己的模式模式,並定義錯誤正則表達式等。

+0

你能否詳細說明或者指出一個例子? – cschol 2009-08-10 12:00:26