shell-mode の行数制限など

うちの担当していたある組み込みプロジェクトは、フルコンパイルするのに40分ぐらいかかり、その間に表示されるCUIのメッセージの量は4000行を超えるような、大きなものだ。
分割した画面のひとつでshell-modeを起動していれば、ウィンドウを切り替えることなくコード作成とビルドが並立できるうえに、ビルドメッセージが色分けされたり、emacsの検索コマンドがそのまま利用できたりなどのターミナルでは得られないメリットを享受できるので、大変重宝している。
ところが、shell-modeを無設定で使用し続けると、バッファのサイズが肥大しつづけることになる。うちのように一度のビルドで膨大なメッセージがはき出される状況だと、すぐにemacs (特にMeadow) の動作が重くなってしまう。
そこで、shell-mode に行数制限の設定を追加する。行数を超えたときは古い行から自動的に破棄されていく。TeraTermの設定における「スクロールバッファの行数」に相当するものだと考えて貰えれば分かりやすいか。
以下のコード片を.emacsに追加する。

(add-hook 'shell-mode-hook
   (function
    (lambda ()
      ;;; シェルバッファの行数の上限を3000行にする
      (setq comint-buffer-maximum-size 3000)
      (setq comint-output-filter-functions
	    'comint-truncate-buffer)
      )))

これでシェルバッファの肥大化を防げる。

ついでなんでshell-modeの設定を

(後で書く)