2010年3月10日 (水曜日)

07:54:27 # Life midnight mode. emacs を使っていて数ヶ月終了しないという使い方をしていると 最近使ってないバッファというのがどんどん蓄積されてきます。 通常はあまり困らないのですが、ある組み合わせで問題になります。 git を使っていてブランチを切り替えるという運用をしていると便 利な auto revert というモードがあります。(setq global-auto-revert-mode t) と設定すれば使えるのですが、ファイ ルシステムを監視しておいて、ファイルが変更されていたら emacs がそのファイルを開き直すというものです。さらに flymake という、 Cのコードなどを編集しているとemacsが入力の度にコンパイルして コンパイルエラーなどが発生したらバッファの該当の行を赤くする という仕組みがあります。 キー入力のたびに gcc が動いてエラーをチェックしてくれます。あ とファイルシステム上でファイルの内容が変更された場合も flymake mode は gcc を実行してエラーのチェックを行います。

git checkout でブランチを切り替えるとglobal auto revert mode の影響で同じ git ワーキングディレクトリにあるファイルが全部 開きなおしになります。そして、flymake の影響ですべてのCファイ ルを再コンパイルし始めます。結果、あるソースツリーで数千のバッ ファを開いている場合は、数千のファイルをコンパイルしなおすこ とになります。

なので midnight mode なわけですが、なぜ必要なのかの背景を書いている ところで力尽きたのでまた今度。

Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $