ansi-termで複数のバッファを開かないようにする

M-x ansi-termするたびに
*ansi-term*
*ansi-term*<2>
*ansi-term*<3>
*ansi-term*<4>
...
とバッファが増えていくのがうざいので、

  • *ansi-term*バッファがなければ新しく開く
  • すでに*ansi-term*があればそのバッファに切り替える

という動きをするようにアドバイス。

(defadvice ansi-term (around check-ansi-term-buffer-already-exists)
  (let ((ansi-term-buf-name "*ansi-term*"))
    (cond ((find (get-buffer ansi-term-buf-name) (buffer-list))
           (switch-to-buffer ansi-term-buf-name))
          (t ad-do-it))))

(ad-activate 'ansi-term)