次: , 前: Overlays, 上: Overlays


38.8.1 オーバレイ属性

オーバレイ属性はある意味でテキスト属性に似ていて、 どちらの属性でも文字の表示方法を変更できます。 しかし、多くの点で異なります。 テキスト属性は、テキストの一部であるとみなされますが、 オーバレイはテキストの一部とはみなしません。 したがって、さまざまなバッファや文字列のあいだでテキストをコピーしても テキスト属性は保存されますが、オーバレイは保存されません。 バッファ内のテキスト属性を変更するとバッファを変更済みと印を付けますが、 オーバレイを移動したりその属性を変更しても バッファの変更とは考えません。 テキスト属性の変更と異なり、 オーバレイの変更はバッファのアンドゥリストには記録されません。 比較のためにSee Text Properties

priority
この属性の値(非負の数であること)は、 オーバレイの優先順位を決定する。 優先順位は、複数のオーバレイが同じ文字を覆い、 いずれも表示用のフェイスを指定している場合に意味を持つ。 priorityの値の大きなものが他に優先し、 そのフェイス属性が他の低い順位の属性のフェイス属性に優先する。

現在、すべてのオーバレイ属性はテキスト属性に優先する。 負の優先順位の意味を決めかねているので、負の優先順位は避けてほしい。

window
属性windownil以外であると、 オーバレイをそのウィンドウだけに適用する。
category
オーバレイに属性categoryがあると、 それをオーバレイのカテゴリ(category)と呼ぶ。 これはシンボルであること。 シンボルの属性がオーバレイの属性のデフォルトの役割を果たす。
face
この属性は、テキストの表示方法、たとえば、 フォントや表示色を制御する。 その値は、フェイス名であるかフェイス名のリストである。 詳しくは、see Faces

属性値がリストであると、その要素は、 (foreground-color . color-name)(background-color . color-name)の形でもよい。 これらの要素は、前景色だけや背景色だけを指定する。 したがって、使用する各色を表すフェイスを作成する必要はない。

mouse-face
この属性は、マウスがオーバレイの範囲に入っているときに faceのかわりに使われる。
modification-hooks
この属性の値は、オーバレイの内側の文字を変更したり、 オーバレイの内側にテキストを挿入したときに 呼び出される関数のリストである。

フック関数は、各変更の前後に呼び出される。 関数が受け取った情報を保存し呼び出しごとに比較すれば バッファテキストにどのような変更が行われたかを正確に判定できる。

変更前に呼ばれるときには、各関数は4つの引数を受け取る。 オーバレイ、nil、変更対象のテキスト範囲の先頭と末尾である。

変更後に呼ばれるときには、各関数は5つの引数を受け取る。 オーバレイ、t、変更済みのテキスト範囲の先頭と末尾、 その範囲の変更前のテキストの長さである。 (挿入では変更前の長さはゼロである。 削除では変更前の長さは削除された文字数であり、 変更後の先頭位置と末尾位置は同じである。)

insert-in-front-hooks
この属性の値は、オーバレイの開始位置へのテキスト挿入の前後に 呼び出される関数のリストである。 呼び出し方法はmodification-hooksの関数群と同じである。
insert-behind-hooks
この属性の値は、オーバレイの終了位置へのテキスト挿入の前後に 呼び出される関数のリストである。 呼び出し方法はmodification-hooksの関数群と同じである。
invisible
属性invisibleは、オーバレイ内のテキストを不可視にする。 つまり、それらはスクリーン上に現れない。 詳しくは、see Invisible Text
intangible
属性intangibleは、オーバレイにおいて テキスト属性intangibleと同様に働く。 詳しくは、see Special Properties
isearch-open-invisible
この属性は、インクリメンタルサーチに対して、 一致箇所がオーバレイに重なったときに 不可視なオーバレイを恒久的に可視にする方法を指示する。 see Invisible Text
isearch-open-invisible-temporary
この属性は、インクリメンタルサーチに対して、 探索中に不可視なオーバレイを一時的に可視にする方法を指示する。 see Invisible Text
before-string
この属性の値は、オーバレイの先頭位置に追加表示する文字列である。 文字列はいかなる意味においてもバッファには現れず、 スクリーン上のみに現れる。 文字列は1コラムで表示される文字のみであること。 タブや改行を含むコントロール文字を含むと奇妙な結果を生じる。
after-string
この属性の値は、オーバレイの末尾位置に追加表示する文字列である。 文字列はいかなる意味においてもバッファには現れず、 スクリーン上のみに現れる。 文字列は1コラムで表示される文字のみであること。 タブや改行を含むコントロール文字を含むと奇妙な結果を生じる。
evaporate
この属性がnil以外であると、 オーバレイが空に(つまり覆う文字がなく)なると、 自動的にオーバレイを削除する。
local-map
この属性がnil以外であると、当該部分のテキストに対する キーマップを指定する。 ポイントの直後の文字がオーバレイに入っていると、 属性の値はバッファローカルなキーマップに置き換わる。 see Active Keymaps

つぎは、オーバレイの属性を読み書きするための関数です。

— 機能: overlay-get overlay prop

この関数は、オーバレイoverlayに記録されている 属性propの値をあれば返す。 overlayにそのような属性に対する値が記録されていなくても、 属性categoryがありそれがシンボルであれば、 そのシンボルの属性propを使う。 さもなければ値はnilである。

— 機能: overlay-put overlay prop value

この関数は、オーバレイoverlayに属性propの値として valueを設定する。 valueを返す。

与えられた文字のオーバレイ属性とテキスト属性の両方を調べる 関数get-char-propertyも参照してください。 See Examining Properties