次: Format Properties, 前: Property Search, 上: Text Properties
特別な組み込みの意味を持つテキスト属性名の一覧を以下に示します。 以降の節では、詰め込みや属性の継承を制御する特別な属性名も示します。 それ以外の名前には標準的な意味はないので、 読者はそれらを好きなように使ってかまいません。
category
category
があるとき、
これを文字のカテゴリ(category)と呼ぶ。
これはシンボルであること。
そのシンボルの属性が、文字の属性のデフォルトとして働く。
face
face
を使う。
その値はフェイス名かフェイス名のリストである。
詳しくは、see Faces。
属性値がリストであると、その要素は、
(foreground-color .
color-name)
や
(background-color .
color-name)
の形でもよい。
これらの要素は、前景色だけや背景色だけを指定する。
したがって、使用する各色を表すフェイスを作成する必要はない。
テキストの内容に基づいて属性face
を自動的に更新する方法に関しては、
see Font Lock Mode。
mouse-face
face
のかわりに
属性mouse-face
が使われる。
この目的において『近く』とは、
文字とマウスの位置のあいだの
属性mouse-face
の値が同じであるすべてのテキストである。
local-map
local-map
を用いることで、
バッファ内のテキストの一部分に対して別のキーマップを指定できる。
ポイントのうしろの文字のこの属性の値がnil
以外であると、
バッファのローカルマップのかわりにその値をキー探索に使う。
属性値がシンボルであると、シンボルの関数定義をキーマップとして使う。
see Active Keymaps。
syntax-table
syntax-table
は、構文テーブルがこの文字に指定するものに優先する。
see Syntax Properties。
read-only
read-only
があると、その文字を変更できない。
変更するどのようなコマンドもエラーになる。
挿入されるテキストがスティッキ性のために属性read-only
を
継承する場合には、読み出し専用文字のつぎにテキストを挿入するとエラーになる。
したがって、スティッキ性を制御することで、
読み出し専用テキストのつぎへのテキスト挿入を許すかどうかを制御できる。
see Sticky Properties。
属性を変更するとバッファを変更したとみなすため、
特別なトリックを知らない限り、属性をread-only
を削除できない。
つまり、inhibit-read-only
にnil
以外の値を束縛して、
属性を削除する。
see Read Only Buffers。
invisible
invisible
がnil
以外であると、
その文字はスクリーンに表示されない。
詳しくは、see Invisible Text。
intangible
intangible
のnil
でない同じ値があると、
それらのあいだにポイントを置けなくなる。
前方に向けてこれらの文字の中にポイントを移動しようとすると、
ポイントは実際にはそれらの末尾へ移動する。
後方に向けてこれらの文字の中にポイントを移動しようとすると、
ポイントは実際にはそれらの先頭へ移動する。
変数inhibit-point-motion-hooks
がnil
以外であると、
属性intangible
は無視される。
modification-hooks
modification-hooks
がある場合、それは関数のリストであること。
その文字の変更にはそれらの関数すべてが呼び出される。
各関数は2つの引数、つまり、バッファの変更対象部分の先頭と末尾を受け取る。
1つの操作で変更される一連の文字に同じ変更フック関数が現れる場合、
関数が実際に何回呼ばれるか予測できないことに注意してほしい。
insert-in-front-hooks
insert-behind-hooks
insert-in-front-hooks
と
まえの文字の属性insert-behind-hooks
に指定されている
関数群を呼び出す。
これらの関数は2つの引数、つまり、挿入されたテキストの先頭と末尾を受け取る。
これらの関数が呼ばれるのは、実際の挿入操作を終えてからである。
バッファ内のテキストを変更するときに呼び出される他のフックについては、
Change Hooksも参照。
point-entered
point-left
point-entered
とpoint-left
は、
ポイント移動を報告するフック関数を保持する。
ポイントが動くたびに、Emacsはこれらの2つの属性値、つまり、
point-left
と
point-entered
を比較する。
これら2つの値が異なれば、
ポイントの古い値と新しい値の2つの引数で(nil
でなければ)
それぞれを呼び出す。
同じことを移動前後のポイントのまえの文字についても行う。
その結果、(同じかもしれない)point-left
の関数を2回、かつ/あるいは、
(同じかもしれない)point-entered
の関数を2回実行する。
いずれにしても、point-left
の関数が最初に呼ばれ、
そのあとでpoint-entered
の関数が呼ばれる。
これらの関数では、char-after
を使って
ポイントを移動せずにさまざまな箇所の文字を調べられる。
ポイントの値が実際に変わったときにのみ、これらのフック関数が実行される。