昔 wanderlust と outline-mode を同時に使ってた時に似た問題があって、
その時のメモによると、
フォントの色は change-major-mode-hook で
font-lock して色つけてるんだけど、
これを let で値をかえたまま
バッファかえて let を抜けると、
emacs が以前のバッファの change-major-mode-hook の値を
新しいバッファの値だと取り違えるという問題があった。
この過程で font-lock が change-major-mode-hook から消えると色が消えるし、
global やら local やら let な値もめちゃくちゃになる。
Emacs Lisp Reference Manual の Node: Intro to Buffer-Local にも
>*警告:*` ' 複数のバッファにおいて変数にバッファローカルな値があるときに,
>変数を`let'で束縛してから, 別の束縛が有効である別のバッファに切り替えて
>`let'を抜けると, Emacsをとても混乱させることになる. こうすると, バッファ
>ローカルな束縛とデフォルトの束縛を混ぜ合わせてしまう.
>混乱を避けるために, このような変数の使い方は避けてください. 別のバッファ
>に切り替える各コード部分を`save-excursion'で囲めば, このような問題はあり
>ません.
こういうのがある。
wanderlust の場合 wl-draft で change-major-mode-hook を let してたので、
そこを save-excursion したら直ったと思う。
>>165 と関係あるかどうかわからんけど一応。