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

Re: Meadow-1.15 の defface



From: 塩野@遊び人 <jun@xxxxxxxxxxxxxxxx> さん曰く
Subject: Re: Meadow-1.15 の defface
Message-ID: <15869.12316.47320.544466@xxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 16 Dec 2002 10:45:00 +0900

塩野> (defface semantic-unmatched-syntax-face
塩野>   '((((class color) (background dark))
塩野>      (:underline "red"))
塩野>     (((class color) (background light))
塩野>      (:underline "red")))

塩野> が、エラーになる。
塩野> スタックトレースです。
塩野> 
塩野> 他のところと良く比べてみたところ、:underline の引数は 't' を取ら
塩野> ないとだめなようで、実際に 't' を指定したところエラーは出なくな
塩野> りました。

上記の様に :underline で色をつけられるのは Emacs-21 からです。
それ以前の手持ちの Emacs をサクッと調べたところ、

(UNIX の) Emacs 20.7 => "red" という文字列は non-nil(t) として扱っ
ているようだ。underline がつく。

(UNIX の) XEmacs 21.4.10 => "red" という文字列は nil として扱っ
ているようだ。underline がつかない。

Meadow 1.15 => nil か t の指定しか許していない。
Meadow 1.99 => 問題なし。

となりました。

塩野> semantic ほどのメジャー?なものですから、私の設定の仕方が悪いのか
塩野> も知れませんが、なにか気が付いた店などありましたら指摘していただ
塩野> けると幸いです。

というわけで、Meadow 1.x 以外はエラーにならないので、semantic に
文句をいうのも辛いところなので、XEmacs ではだめですが、

(when (and (featurep 'meadow) (eq emacs-major-version 20))
  (defadvice internal-set-face-property (before face-underline activate)
    (when (and (eq property 'underline)
	       value (stringp value))
      (setq value t))))

でどうでしょうか。

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