2007-05-12

emacs-w3mでのbuffer移動


emacs-w3mでは、移動先のバッファがw3mのバッファである時に再描画するために、switch-to-bufferのバインディングをw3m-switch-to-bufferで上書きしている。
その関数の中で、iswitchb-modeが有効になっている時にiswitchb-read-bufferを呼んでいるが、mcompleteを使っているとiswitchbの機能とmcompleteの機能がかぶってうまく動作しなくなるようだ。

というわけで、iswitchb-read-bufferの前後でmcompleteをトグルするadviceを書いてみた。


(defadvice iswitchb-read-buffer (around disable-mcomplete activate)
(mcomplete-mode nil)
(condition-case nil
ad-do-it
(quit (mcomplete-mode t)
(setq quit-flag t))))


cf
9.5.3.3 エラーハンドラの書き方
20.9 中断
16. Emacs Lisp関数のアドバイス