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

Re: w3m-view-this-url-new-session-in-background



[emacs-w3m:07242] で Christian Ruediger Bahls さんが提起した問題
に関して、2年以上も前の議題を蒸し返します。:)

>>>>> In [emacs-w3m : No.03796] 寺西さん wrote:

>> w3m-view-this-url-new-session-in-background という新規オプションを設け、
>> non-nil なら w3m-view-this-url-new-session でリンクをたどったときに
>> バッファを移動しないようにしてみました (幹)。(default は nil)

> w3m-view-this-url-new-session-in-background を non-nil にすると、
> Shift+RET などでリンクをたどっても、バッファスイッチが起きないためか、
> C-l などを押さないとタブ行が描き変わりません。

このための対策として、現在 w3m-e21.el に以下の関数があります。

(defun w3m-update-tab-line ()
  "Update tab line."
  (when w3m-use-tab
    (set-cursor-color (frame-parameter (selected-frame) 'cursor-color))))

これは、カーソルに同じ色を設定することによって、Emacs の副作用で
タブ行の表示を更新させることを意図しています。ところが、ユーザが
意図的にカーソル色を変更していない場合、

(frame-parameter (selected-frame) 'cursor-color)

は常に black を返すことがわかりました。したがって背景色が black
になっている Emacs で上記の関数を実行すると、カーソルが見えなく
なってしまいます。どうやら Emacs 21.1 以上で使える別の方法を探す
必要がありそうです。Christian Ruediger Bahls さんには、とりあえ
ずカーソル色を明示的に指定してもらうようにお願いしておきました。

カーソル色が default face の bg色と同じだったら、代わりに
default face の fg色を使うというのも考えてみました。

(defun w3m-update-tab-line ()
  "Update tab line."
  (when w3m-use-tab
    (set-cursor-color
     (let ((cursor-color (frame-parameter (selected-frame) 'cursor-color)))
       (if (equal (color-values cursor-color)
		  (color-values (face-background 'default)))
	   (face-foreground 'default)
	 cursor-color)))))

でも default face の bg色が、black ではないけれども非常に暗い色
だった場合は破綻します。

というわけで、妙案を募集します。この際、妙な案でもいいです。:)