[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: refresh tab status
>>>>> In [emacs-w3m : No.05817] 土屋さん wrote:
> Emacs-21.2 で使っていると,以前は,
> コンテンツ取得中を示して,タブ中のタイトルの色が黒から赤に変わる
> コンテンツ取得完了を示して,タブ中のタイトルの色が赤から黒に戻る
> となっていたと思うのですが,最近になって,カーソルを一度動かさないと
> 上記の変化が起こらないようになりました.
申し訳ない、favicon の表示に気を取られて、そっちがおろそかになっ
てしまっていました。とりあえず、黒/赤の変化が起こらない原因になっ
ている 0.1秒タイマーを取り去りましたが、もっと根本的なところから
やり直そうと思っています。
> 取得開始時と終了時に適当に refresh してくれると嬉しいんですけど.
その「適当に」が曲者でして、現在 Emacs 21 では header-line の表
示を
(symbol-value 'header-line-format)
=> ((:eval (w3m-tab-line)))
という固定値で行なっていて、Emacs が w3m-tab-line という関数を
「適当に頻繁に」呼んでくれることによって、その戻り値が表示に反映
されています。Emacs が外部プロセスとつながっているときは非常に頻
繁に (一つのページを reload する間に 1000回前後) 呼ばれるのです
が、それで spinner を回したのでは速すぎるので、0.1秒未満の周期で
呼ばれた場合は何もしないようにしたのでした。じゃあ 0.1秒経てば
タイトルの色が変化するかと言うと、そうはならないのが不可解なとこ
ろです。
一方、favicon を取得して画像を header-line に張り付けた後では外
部プロセスとの通信が行なわれないので、ただ待っていても画像が現れ
ない問題が以前はありました。これは前記とは別のタイマーで解決して
あります。
ぼくが考えている根本的な解決は、header-line-format の :eval 機能
を使わずに、header-line-format を外部プロセスの開始終了にしっか
り同期して書き換えることです。うまくいくかどうか判りませんが。
--
Katsumi Yamaoka <yamaoka@jpl.org>