2011-07-08 4 views
5

M-xコンパイルを実行するか、elispコンパイルエラーが発生すると、emacsはウィンドウを縦に分割し、コンパイル出力/エラーメッセージを新しいウィンドウに表示します。私は垂直方向に分割されたウィンドウが私にとっては狭すぎるので、フルスクリーンウィンドウで私のバッファで作業することを好む。 ではなく、のウィンドウを分割し、M-xスイッチバッファをコンパイル/エラーバッファに書き込むことができますか?EmacsにM-xコンパイルエラーまたはelispコンパイルエラーでウィンドウを分割しないように指示する方法はありますか?

編集:Treyの提案は編集に役立ちます。ウィンドウを分割するすべてのコマンドに設定する方法はありますか?私が考えているのは、elispコンパイルです。M-x aproposM-xはです。 (/ (frame-pixel-height) (frame-char-height)) ...あなたは空想取得し、実際にフレーム内のテキストの行数を計算することができ

(setq compilation-window-height 1000) 

、それは愚かなようだ:

+1

これは* elisp *の質問として言い換えれば、それは話題にする必要があります。 – Arafangion

+1

@Arafangion私はそれがFAQの「プログラマが一般的に使うソフトウェアツール」の項にあると思います。編集者に関する多くの疑問がSOにあります。 – jonsca

答えて

5

はこれを試してみてください。

Emacsは、一般的にバッファを表示する方法をIO制御、あなたはすべてのバッファ名に一致するように、変数same-window-regexpsを設定することができ、その後、display-bufferを使用してバッファを表示するすべてのコマンドは、同じウィンドウを使用します。

(setq same-window-regexps '(".")) 

参照Choosing a Window多くのため詳細。

+0

はうまくいった! M-xが出現するかM-x aproposのためにそれを行う方法はありますか? – benhsu

+0

@benhsuはい、更新しました。 –

+0

'M-x compile'の場合、' M-x customize-variable RET same-window-regexps RET'を使い、 '\ * compilation \ *' – user1735594

2

私の推測では、split-window-preferred-function変数をカスタマイズしたいと思っています。デフォルト値はsplit-window-sensiblyです。現在のバッファを切り替えるだけのカスタムバージョンに変更する必要があります。

これは動作するようです:

(defun no-split-window() 
    (interactive) 
    nil) 

(setq split-window-preferred-function 'no-split-window) 
0

これは私がコンパイル窓に使用するものです。エラーや警告がない場合、コンパイル出力バッファが1秒間表示されてから強制終了されます。それ以外の場合は、おそらくエラーを見つけて修正する必要があるため、バッファはそのままです。私はこれをa newsgroupから得た。

 
(defun kill-compile-buffer-if-successful (buffer string) 
    " kill a compilation buffer if succeeded without warnings " 
    (if (and 
     (string-match "compilation" (buffer-name buffer)) 
     (string-match "finished" string) 
     (not 
     (with-current-buffer buffer 
      (search-forward "warning" nil t)))) 
     (run-with-timer 1 nil 
         'kill-buffer 
         buffer))) 
(add-hook 'compilation-finish-functions 'kill-compile-buffer-if-successful)