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

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



From: Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxxxxxxxxxx> 曰く
Subject: [MD:1699]mw32faces.el - set-face-underline-p
Message-ID: <20000302.114045.63973716.shirai@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Mar 2000 11:40:45 +0900 (JST)

原因がわかりました。(^^)V

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

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

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

face-property-put() の最初で、

(defun face-property-put (plist prop val)
  (if (null val)
      val
    (let ((x plist) (y plist))

と val が nil だったら nil を返すために

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

となってしまい、internal-set-face-property() の 

	  ((lambda (x)
	     (aset x 7 (face-property-put (aref x 7) property value)))
	   (internal-get-face (if (symbolp face) face (face-name face)) t))

の部分で、他の属性をすべて nil にしてしまいます。本当は、

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

ですよね。

elisp なら何とかなるぞ、と思い直そうと思ったのですが、
face-property-put() 内部の 'string<' の部分の意味が理解できない
ので、パッチは作れませんでした。 > どなたかよろしく ^^;;;

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