ただ今回は並行して make を走らせたいのではなくて後から実行された方の make を優先してほしいだけなので毎回 yes と答えたいだけである。
うまい方法が思いつかなかったので compile.el の以下の該当部分を直接書き換えてしまったがもっと良いテクニックはあるだろうか。
こんなんどうでしょうか。yes-or-no-p を強制的に yes にする force-yes という advice を定義しておいて、compilation-start の間だけ force-yes を有効にする advice を定義すると。ややこしいな。Emacs Lisp の advice がわかる人はコードをみたほうが早い。
あと force-kill-compilation-process を nil にしておくとちゃんと yes/no を聞いてくるようになる。
(defvar force-kill-compilation-process t "*If non nil, kill before compilation proces when compile sources") (defadvice yes-or-no-p (around force-yes) (setq ad-return-value t)) (defadvice compilation-start (around force-kill-compilation-process activate) (if force-kill-compilation-process (progn (ad-activate-regexp "force-yes") ad-do-it (ad-deactivate-regexp "force-yes")) ad-do-it))