display-buffer
全体で一時的に無効にすることで、目的を達成できるようですcompilation-start
。
これは、sds が言ったことと、@ hereのコメントに投稿されたものを組み合わせたものです。
そこのコメントには、元のソース バッファでのポイント ジャンプに関する厄介な問題がありましset-window-point
たgoto-char
。汚いハックのように感じますが、今のところ機能しています。YMMV!
(defun brian-compile-finish (buffer outstr)
(unless (string-match "finished" outstr)
(switch-to-buffer-other-window buffer))
t)
(setq compilation-finish-functions 'brian-compile-finish)
(require 'cl)
(defadvice compilation-start
(around inhibit-display
(command &optional mode name-function highlight-regexp))
(if (not (string-match "^\\(find\\|grep\\)" command))
(flet ((display-buffer)
(set-window-point)
(goto-char))
(fset 'display-buffer 'ignore)
(fset 'goto-char 'ignore)
(fset 'set-window-point 'ignore)
(save-window-excursion
ad-do-it))
ad-do-it))
(ad-activate 'compilation-start)
これで、すべてのコンパイル バッファがoutstr
正常終了ステータスを返さない場合、または呼び出されたコマンドが「find」または「grep」で開始された場合にのみ表示されることがわかります。