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

Re: text-propertiy の重複



ども、長です。

まだ、あまり進展はないのですが、時間がとりにくいので報告を上げておきます。

このメールは----------------------------------------------
山岡 克美 <yamaoka@jpl.org> さん( 山岡 と引用)の
MsgID   : [emacs-w3m : No.08413]
Subject : [emacs-w3m:08413] Re: text-propertiy の重複
Date    : [Tue, 11 Oct 2005 12:10:22 +0900]
-------------------------------------------への返信です-〆
 《件名・引用文は改行・削除・変更してあるかもしれません》
山岡> (add-text-properties START END 'bold-p t 'underline-p t)
山岡> こんなことができるなら苦労は無いんですけれどね。

FACEに関してはそれに近いことができるようです。

** Emacs の Info より。
SECTION Special Properties
| `face'
|      テキストのフォントと表示色を制御するために属性`face'を使う。その
|      値はフェイス名かフェイス名のリストである。詳しくは、*Note Faces::。
| 
|      属性値がリストであると、その要素は、`(foreground-color
|      . COLOR-NAME)'や`(background-color . COLOR-NAME)'の形でもよい。こ
|      れらの要素は、前景色だけや背景色だけを指定する。したがって、使用
|      する各色を表すフェイスを作成する必要はない。
| 
|      テキストの内容に基づいて属性`face'を自動的に更新する方法に関して
|      は、*Note Font Lock Mode::。

となっていて、(face (list a b c ...))も許容するようです。
# 実際テストコードで確認できました。

なので、text-propertiyの内、FACEだけは下記のようなラッパー関数を使用するようにし
て、交ぜるようにしてみようとしています。
# まだ試していませんが
(defun w3m-add-text-face-property (start end name &optional object)
  "FACE property add wrapper.
FACE is only list type in emacs-w3m."
  (let ((pos start)
	next prop)
    (while (< pos end)
      (setq prop (get-text-property pos 'face object))
      (setq next (next-property-change pos object end))
      (if prop
	  (w3m-add-text-properties pos next
				   '(face (append prop '(name))) object)
	(w3m-add-text-properties pos next
				 '(face '(name)) object))
      (setq pos next))))
CHO> 今晩にでもソースを追跡したいと思います。
山岡> 遅くしないようにお気を付け下さい。;-)

はい、じっくり確認したいと思います。

# パフォーマンスの確認も色々やってみていて
# bookmark-menuの呼び出し回数の多さに愕然としたりしました(w

以上です。
--
Tsuyoshi CHO
  mailto:tsuyoshi_cho@ybb.ne.jp