[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: Bookmark Menu



From: Katsumi Yamaoka <yamaoka@jpl.org> さん曰く
Subject: [emacs-w3m:08298] Re: Bookmark Menu
Message-ID: <b9y4qb1hnky.fsf@jpl.org>
Date: Mon, 11 Jul 2005 15:19:09 +0900

> > CVS HEAD & Emacs 22以上 & menu 利用の方々には、しばらくの間ご不便をお
> > 掛けします。
> 
> ご不便てことはないと思いますが、見苦しいですね。で、改めて確認し
> てみると、以前からブックマークのページでは TAB メニューの階層が
> おかしくなっていました。

のようです。もともと、TABメニューは TAB が表示できない Emacs20
とかでしか使っていなかったので、長い間気づきませんでした。

> 鍵は minor-mode で、M-x w3m-bookmark-mode RET で minor-mode を
> off にすると、おかしな動作は解消されます。

そうですね。

> どうも xdisp.c にバグ
> がいるんじゃないかと思うのですが、的確に指摘できる自信が無いので、
> 現在、代わりの方法 (menu-bar-update-hook で easy-menu-change を
> 使わない) で置き換えようとしています。

w3m-bookmark-mode-map に menu まで入っちゃっていることによって、
Emacs の秘孔をついちゃているような感じがします。例えば、anntena
も独自に minor-mode を設定していますが、階層がおかしくなるという
ことはないですよね。

# じゃ、どうすれば OK?というは全然わかりませんが。。。

> 他に気がついたこと:
> 
> ブックマークのページで定義される minor-mode-map の内容もメニュー
> に反映させる必要があります。
> 
> 長さんの変更後に w3m-bookmark.el が常駐になってしまっています。
> 難易度は高いですが、以前の autoload に戻すことを検討しましょう。

" *w3m bookmark*" buffer は buffer-enable-undo() されているので、
何回か w3m-bookmark-iterator() から w3m-bookmark-buffer() を呼び
出して、erase-buffer() => insert() を繰り返していると、
undo-outer-limit-function が召喚されてしまいます。
一回 w3m-bookmark-iterator() を動かしたら、bookmark の中身が変わ
るまでキャッシュしておくか、w3m-bookmark-buffer() を使わない方が
良いと思います。

# bookmark のパースは結構重めなので、キャッシュ+独自バッファが良
# いような気がします。また、autoload にするなら独自バッファが必
# 須かな?

-- 
白井秀行 (mailto:shirai@meadowy.org)