[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:1722]*PLAN* face-property-put (Re: mw32faces.el - set-face-underline-p)



>>>>> meadow-develop の No. 1720
>>>>> Message-Id: <uaek8f90s.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> で、
>>>>> "himi" == Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx>さま曰く...

himi> このパッチに関するchangelogを書いていただけないでしょうか?

2000-03-03  Keiichi Suzuki  <keiichi@xxxxxxxxx>

	* mw32faces.el (face-property-put): Remove only the specified
	property, when `val' is nil.

;; 今更要らないかとも思いますが、一応 plan を。

-------- 8>< -------- 8>< -------- 8>< -------- 8>< -------- 8>< --------
------------------------------------------------------------
Submitter: Suzuki Keiichi
Subject: face-property-put (Re: mw32faces.el - set-face-underline-p)
Transaction: Patch for Bug Fix.
X-ML-COUNT: 
Status: 
------------------------------------------------------------
>>>>> meadow-develop No. 1712
>>>>> Message-Id: <20000303.151924.68472384.shirai@xxxxxxxxxxxxxxxxxxx>

白井> だめですね。新しく作る face からみんな italic, bold などの属性が
白井> 消えてしまいます。

白井> dispextern.h の
himi> FACE_PROPERTY_MERGEあたりの処理で引っかかっているのかな。
白井> 周辺が要注意。

白井> ではなくて、mw32faces.el の face-property-put() が悪さをしていま
白井> した。

>>>>> meadow-develop No. 1718
>>>>> Message-Id: <u3dq8eakr.fsf@xxxxxxxxxxxxx>

2000-03-03  Keiichi Suzuki  <keiichi@xxxxxxxxx>

	* mw32faces.el (face-property-put): Remove only the specified
	property, when `val' is nil.

-------- 8>< -------- 8>< -------- 8>< -------- 8>< -------- 8>< --------
--- mw32faces.el.orig	Fri Mar 03 17:01:00 2000
+++ mw32faces.el	Fri Mar 03 17:02:00 2000
@@ -85,7 +85,24 @@

 (defun face-property-put (plist prop val)
   (if (null val)
-      val
+      (cond
+       ((null plist)
+	nil)
+       ((eq (car plist) prop)
+	(cdr (cdr plist)))
+       (t
+	(let ((x (cdr plist)))
+	  (and (cdr x)
+	       (while
+		   (cond
+		    ((eq (car (cdr x)) prop)
+		     (setcdr x (cdr (cdr (cdr x))))
+		     nil)
+		    ((not (string< (symbol-name prop)
+				   (symbol-name (car (cdr x)))))
+		     nil)
+		    ((setq x (cdr (cdr x))))))))
+	plist))
     (let ((x plist) (y plist))
       (while
 	  (cond
-------- 8>< -------- 8>< -------- 8>< -------- 8>< -------- 8>< --------

;; plist が長くなるようなものでなければ、 string< のところは、削った方が
;; コストが小さくなるように思います。(どちらにしてもそれほど呼ばれる頻度
;; は高くないと思いますので、どうでもいいような気はします。
-------- 8>< -------- 8>< -------- 8>< -------- 8>< -------- 8>< --------

-- 
鈴木圭一 / keiichi@xxxxxxxxx
PGP finger print (DH/DSS)
0B32 B37E 6DE9 3BC1 68A4  4089 7AAF 2B03 ECBD 614B