新たなフェイスを定義する方法は、defface
を使うことです。
これは、カスタマイズバッファ
(see 簡便なカスタマイズ方法)
を用いてユーザーがカスタマイズできる
カスタマイズ項目(see Customization)の一種を作成します。
specに従ったデフォルトを持つカスタマイズ可能なフェイスとして faceを宣言する。 シンボルfaceをクォートしないこと。 引数docは、フェイスの説明文字列を指定する。
defface
を実行すると、specに従ったフェイスを定義し、 ファイル.emacsから読み取った任意のカスタマイズを specの指定に優先させる。specの目的は、異なる種類の端末でフェイスがどのような 見た目になるかを指定することである。
(
display atts)
の形の要素から成る 連想リストであること。 要素のcarのdisplayは端末の種類を指定する。 cdrのattsはフェイスの属性とその値のリストであり、 その種類の端末上でそのフェイスがどのように見えるかを指定する。 可能な属性は、custom-face-attributes
の値で定義される。specの要素のdisplay部分は、要素を適用するフレームを決定する。 specの1つより多くの要素が指定されたフレームに一致する場合、 そのフレームに一致した最初の要素だけを用いる。 displayには2つの可能性がある。
t
- specの要素はすべてのフレームで一致する。 したがって、specの以降の要素をけっして使わない。 通常、
t
はspecの最後の(あるいは唯一)の要素に使う。- リスト
- displayがリストであると、 各要素は
(
characteristic value...)
の形であること。 ここで、characteristicはフレームの分類方法であり、 valueはdisplayを適用すべき分類とみなす値である。 特性characteristicの可能な値はつぎのとおりである。
type
- フレームが使用するウィンドウシステムの種類であり、
x
、pc
(MS-DOSのコンソール)、w32
(MS Windows 9X/NT)、tty
のいずれかである。class
- フレームで扱える表示色の種類であり、
color
、grayscale
、mono
のいずれかである。background
- 背景の種類であり、
light
かdark
のいずれかである。displayの1つの要素において、 指定されたcharacteristicに 1つより多くのvalueを指定すると、 それらのいずれの値でも受け入れる。 displayに1つより多くの要素がある場合、 各要素は異なるcharacteristicを指定すること。 そうすれば、フレームの各特性は displayに指定されたそのフレーム向けの valueの1つに一致するはずである。
標準フェイスregion
をdefface
で
定義するとつぎのようになります。
(defface region ((((class color) (background dark)) (:background "blue")) (t (:background "gray"))) "Used for displaying the region.")
内部的にはdefface
は、
defface
に指定されたフェイス属性の記録には
シンボルの属性face-defface-spec
、
カスタマイズバッファでユーザーが保存した属性の記録には
saved-face
、
説明文字列の記録にはface-documentation
を使います。