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

Re: spinner



>>>>> In [emacs-w3m : No.05821] 山岡 wrote:

> たぶん Emacs 21 でも spinner が表示されるようになったと思うんで
> すが、いかがでしょ?

header-line の画像を再描画する方法をいろいろ探していまして、最初
に見つけたのが clear-image-cache という関数でした。しかしこれは
有効な cache まで消してしまうし、頻繁に使っている最中に別の画像
を表示しようとすると、ほぼ確実に Emacs が segfault で落ちます。

一方 image-cache を消さないと再描画してくれないのは、同じ画像デー
タの :index 項だけを変えているのが原因ではないかと思ったので、毎
回 create-image() を使うようにしたところ、少し進展しました。

clear-image-cache() の使用が再描画に有効だったのは、この関数が
windows_or_buffers_changed をいじっているかららしく、同様の他の
ELisp から呼べる関数を探して、現在は header-line の再描画を次の
式で行なっています。

  (let ((window-min-height 0))
    (shrink-window 1)
    (enlarge-window 1))

でも Windows や Mac ではちゃんと動いているんでしょうか? ^^;;
以下は、ぼくの環境では動く spinner のテストプログラムです:

Attachment: bin00200.bin
Description: application/emacs-lisp