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

[MD:4399] strict-spec & function.



ちょっと時間を使って、elisp LF loaderを使ったHigh level API実装が
出来上がったんですが、かなり便利な分、早くも不満が出てきました。^^;;;

strict-specとfunctionが独立していても何にもメリットがないし、
functionを導入すると、strict-specが宙に浮いてしまうということ、specvecは、
いずれにせよ便利だというあたりに気づきました。こいつらは統合
するべきでしょう。

具体的には、strict-spec, functionの両方のkeyを廃止し、かわりに、specという
キーを導入します。(ああ、また非互換な変更だ^^;;;)

で、こんな感じで指定します。

  (spec
    (<specvec> strict <logfont> [<option-alist>])
                      or
    (<specvec> function <func>  [<option-alist>])
    ...)

例としてはこんな感じ。

(w32-add-font
 "windows-16"
 '((spec
    ((:char-spec ascii :height any)
     strict
     (w32-logfont "Courier New" 8 16 400 0 nil nil nil 0 1 3 49))
    ((:char-spec japanese-jisx0208 :height any)
     strict
     (w32-logfont "MS ゴシック" 0 -16 400 0 nil nil nil 128 1 3 49))
    ((:char-spec japanese-jisx0208 :height any :slant italic)
     strict
     (w32-logfont "MS 明朝" 0 -16 400 0 nil nil nil 128 1 3 17))
    ((:char-spec japanese-jisx0208 :height any :weight any :slant any)
     function
     (lambda (c attrs f)
       (mw32-load-lf-from-request
	c attrs f
	'((width . 16))
	'((fixed . t)
	  (family . "Courier New"))))))))

もっとも、実際のところ、

(<specvec> strict <logfont> [<option-alist>])
   == (<specvec> function (lambda (c attrs f) <logfont>) [<option-alist>])

にすぎないというあたり、ちょこっと悲しいものがありますが。^^;;;

で、こういう変更をしてもよいですかねぇ?

from himi