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

[MD:1715]mw32faces.el - set-face-underline-p



From: Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx> さん曰く
Subject: [MD:1713]mw32faces.el - set-face-underline-p
Message-ID: <uitz4sgiq.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: 03 Mar 2000 15:40:29 +0900

himi> Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxxxxxxxxxx> writes:
himi> 
himi> > 白井> dispextern.h の
himi> > himi> FACE_PROPERTY_MERGEあたりの処理で引っかかっているのかな。
himi> > 白井> 周辺が要注意。
himi> > 
himi> > ではなくて、mw32faces.el の face-property-put() が悪さをしていま
himi> > した。
himi> 
himi> わわわ。そういえば、これ、set-face-property関連で
himi> 仕様変更したからかしら。

ビンゴ :-)
属性を t にするならいっつもするけど、nil にするのはめったにやら
ないから気づきませんね。

himi> > elisp なら何とかなるぞ、と思い直そうと思ったのですが、
himi> > face-property-put() 内部の 'string<' の部分の意味が理解できない
himi> > ので、パッチは作れませんでした。 > どなたかよろしく ^^;;;
himi> 
himi> これは、sortされたplistでなくてはいけないので(equalできるようにするため)
himi> 順番どおりに挿入することになっているためです。今回の場合は、
himi> ただ単に、 (if (null val) block をとってしまえばよいんじゃないかしら。

納得です。

(face-property-put '(bold t font-explicit-p t underline t) 'underline nil)
=> (bold t font-explicit-p t underline nil)

(face-property-put '(bold t font-explicit-p t) 'underline nil)
=> (bold t font-explicit-p t underline nil)

(face-property-put '(bold t font-explicit-p t underline t) 'italic nil)
=> (bold t font-explicit-p t italic nil underline t)

となりました。

# nil な P は取らなきゃいけないのかな? と思って、最初躊躇してし
# まった。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)

とりあえず。(himi さんてば ispell4 直している)
## 英語は直してね ^^;;;

2000-03-03  Hideyuki SHIRAI  <shirai@xxxxxxxxxxxxxxxxxxx>

	* mw32faces.el (face-property-put):
	Set property value to nil, called with 'val' equal 'nil'.


--- mw32faces.el.orig	Tue Feb 17 01:44:06 1998
+++ mw32faces.el	Fri Mar 03 16:00:33 2000
@@ -84,29 +84,27 @@
     (not y)))
 
 (defun face-property-put (plist prop val)
-  (if (null val)
-      val
-    (let ((x plist) (y plist))
-      (while
-	  (cond
-	   ((null x)
-	    (if (null y)
-		(setq plist (list prop val))
-	      (setcdr (cdr y) (list prop val)))
-	    nil)
-	   ((string< (symbol-name prop)
-		     (symbol-name (car x)))
-	    (if (eq x y)
-		(setq plist (cons prop (cons val x)))
-	      (setcdr (cdr y) (cons prop (cons val x))))
-	    nil)
-	   ((eq (car x) prop)
-	    (setcar (cdr x) val)
-	    nil)
-	   (t t))
-	(setq y x)
-	(setq x (cdr (cdr x))))
-      plist)))
+  (let ((x plist) (y plist))
+    (while
+	(cond
+	 ((null x)
+	  (if (null y)
+	      (setq plist (list prop val))
+	    (setcdr (cdr y) (list prop val)))
+	  nil)
+	 ((string< (symbol-name prop)
+		   (symbol-name (car x)))
+	  (if (eq x y)
+	      (setq plist (cons prop (cons val x)))
+	    (setcdr (cdr y) (cons prop (cons val x))))
+	  nil)
+	 ((eq (car x) prop)
+	  (setcar (cdr x) val)
+	  nil)
+	 (t t))
+      (setq y x)
+      (setq x (cdr (cdr x))))
+    plist))
 
 ;;; Accessors.
 (defun face-name (face)