Emacs でのコンパイル後に自動的にウィンドウを閉じるようにする方法

Emacs 上でコンパイルを行うと window が分割されて、コンパイルログの window が表示されます。 その window からエラー箇所にジャンプできて、とても便利です。
ただし、コンパイルに成功していれば、コンパイルの window は必要がないので閉じます。 これを毎回やっているとちょっとめんどくさいです。

そこで、コンパイルが終わって成功していれば、自動で終わるようにする lisp を書いてみました。
以下のコードを .emacs.el に記述してください。

(require 'compile)

(defvar yel-compile-auto-close t
  "* If non-nil, a window is automatically closed after (\\[compile]).")

(defadvice compile (after compile-aftercheck
                          activate compile)
  "Adds a funcion of windows auto-close."
  (let ((proc (get-buffer-process "*compilation*")))
    (if (and proc yel-compile-auto-close)
        (set-process-sentinel proc 'yel-compile-teardown))))

(defun yel-compile-teardown (proc status)
  "Closes window automatically, if compile succeed."
  (let ((ps (process-status proc)))
    (if (eq ps 'exit)
        (if (eq 0 (process-exit-status proc))
            (progn
              (delete-other-windows)
              (kill-buffer "*compilation*")
              (message "---- Compile Success ----")
              )
          (message "Compile Failer")))
    (if (eq ps 'signal)
        (message "Compile Abnormal end"))))
コンパイルに成功していると "Compile Success" のメッセージがミニバッファに出て、 window が自動的に閉じるようになります。
ただし、コンパイルに成功すると window を閉じるので、 warning がでている場合でも閉じてしまいます。 一時的に window が閉じるのをやめたい場合には M-x set-variable 等で yel-compile-auto-close 変数に nil を設定してください。
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
35位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
6位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

05月 | 2017年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。